Do the Untwist
Do the Untwist
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 982 Accepted Submission(s): 638
Problem Description
| Array | 0 | 1 | 2 |
| plaintext | 'c' | 'a' | 't' |
| plaincode | 3 | 1 | 20 |
| ciphercode | 3 | 19 | 27 |
| ciphertext | 'c' | 's' | '.' |
Sample Input
5 cs.
101 thqqxw.lui.qswer
3 b_ylxmhzjsys.virpbkr
0
Sample Output
cat
this_is_a_secret
beware._dogs_barking 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1129 题目意思很简单,倒推明文;题目给出的例子是:【cat --> cs.】
第一步:把cat转化成对应数字 plaincode,文中有提到,_=0, .=27, a=1 ...【cat --> 3,1,20】
第二步:利用公式将 plaincode转化成密文对应的数字 ciphercode【3,1,20 --> 3,19,27】
第三步:将 ciphercode转化成密文 【3,19,27 --> cs.】
题目给出密匙k和密文,要求求出明文; 此题最关键的是公式的转化!
公式如下:
明文-->密文:ciphercode[i] = (plaincode[ki mod n] - i) mod 28.
密文-->明文:plaincode[ki mod n] = (ciphercode[i] + i) mod 28.![]()
#include<stdio.h>
#include<string.h>
int main()
{
char s[],b[];
int i,j,n,k;
while(scanf("%d",&k),k)
{
scanf("%s",s);
n=strlen(s);
for(i=;i<n;i++)
{
if(s[i]=='_')
s[i]=;
else if(s[i]=='.')
s[i]=;
else
s[i]=s[i]-'a'+;
}
for(i=;i<n;i++)
{
b[k*i%n]=(s[i]+i)%;
}
for(i=;i<n;i++)
{
if(b[i]==)
printf(".");
else if(b[i]==)
printf("_");
else
printf("%c",b[i]+'a'-);
}
printf("\n");
}
return ;
}
Do the Untwist的更多相关文章
- 1006 Do the Untwist
考察编程基础知识,用到字符和数字相互转化等.形式是描述清楚明文和暗文的转化规则. #include <stdio.h> #include <string.h> #define ...
- ZOJ 1006:Do the Untwist(模拟)
Do the Untwist Time Limit: 2 Seconds Memory Limit: 65536 KB Cryptography deals with methods of ...
- Do the Untwist(模拟)
ZOJ Problem Set - 1006 Do the Untwist Time Limit: 2 Seconds Memory Limit: 65536 KB Cryptography ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
- [ZOJ 1006] Do the Untwist (模拟实现解密)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6 题目大意:给你加密方式,请你求出解密. 直接逆运算搞,用到同余定理 ...
- ACM/ICPC ZOJ1006-Do the Untwist 解题代码
#include <iostream> #include <string> #include <stdlib.h> using namespace std; int ...
- ZOJ1006 Do the Untwist
简单模拟~ #include<bits/stdc++.h> using namespace std; ; int a[maxn]; unordered_map<char,int> ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
随机推荐
- MySQL 简洁 数据操作 增删改查 记不住的 看这里把
1.库操作====================== 1.创建 CREATE DATABASE DB2 charset utf8; 2.删除 DROP DATABASE db2; 3.使用(进入) ...
- Apache Shiro(五)-登录认证和权限管理ssm
创建一个web动态项目 jar包 web.xml web.xml做了如下几件事情1. 指定spring的配置文件有两个 applicationContext.xml: 用于链接数据库的 applica ...
- Oracle 查看表结构视图
-- 创建视图 CREATE VIEW VIEW_TABLEASSELECT A.TABLE_NAME, A.column_name 字段名,A.data_type 数据类型,A.data_lengt ...
- PHP房贷计算器代码,等额本息,等额本金
debx(); function debx() { $dkm = 240; //贷款月数,20年就是240个月 $dkTotal = 10000; //贷款总额 $dknl = 0.0515; //贷 ...
- linux 入门测验
cd . 当前目录.. 返回上一级目录 ../../../返回多级目录 grep "目标信息" 目标地址 -v :显示没有被匹配的信息 mkdir -p:创建多级目录 mkdir ...
- (转)linux shell单引号、双引号及无引号区别
原文:http://blog.csdn.net/woshizhangliang999/article/details/50132265 3.描述linux shell中单引号.双引号及不加引号的简单区 ...
- pulic——功能性(自己写完测试的)
一. 构建一个数组[“00:00”,"00:05"..."23:55"]的数组 function buildAxis(){ var ary=[]; ary.pu ...
- 4.爬虫 requests库讲解 GET请求 POST请求 响应
requests库相比于urllib库更好用!!! 0.各种请求方式 import requests requests.post('http://httpbin.org/post') requests ...
- win7远程登录
开始--附件--远程桌面连接 点击显示选项 填写信息,连接上了. 分配磁盘 计算机---右键----管理
- mysql中时间日期函数
转自:mysql 中 时间和日期函数 一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +- ...