您的位置:首页 > 其它

ZOJ 1009, 1115, 1476, 1733, 2405 解题报告

2008-10-20 21:51 531 查看
星期天这天一口气AC了五道题,除了1009外基本都可算是简单题。

(1)1009 Enigma:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1009

题目是讲解二战期间德国使用的密码机Enigma。明文通过按键,通过转盘(rotor)转换为密文。如下图所示为有1个转盘,一共有6个字母的情况,每击键一次,转盘转动一格。如果含有多个转盘,则以类似数字进制方式转动,即第一个盘转动一圈后,第二个盘转动一格,以此类推。题目要求解密含有三个转盘的密文,第一行输入m,表示键盘一共有m个字母('A','B','C',...,'A'+m-1),然后输入三行表示每个转盘的初始字符映射状态(例如下图中的rotor的初始状态是BADFEC)。然后输入n行密文,要求输出每个密文的明文。

2405_specialized_four_digit_numbers

/*输出一个数字的10,12,16进制位之和相等的4位数*/

#include <stdio.h>

/*计算数字n以base为基数时的位和*/

int getsum(int n, int base)

{

int sum=0;

while(n)

{

sum+=n%base;

n/=base;

}

return sum;

}

int main()

{

int i,sum1,sum2,sum3;

for(i=2992;i<=9999;i++)

{

sum1=getsum(i, 16);

sum2=getsum(i, 12);

if(sum1!=sum2) continue;

sum3=getsum(i, 10);

if(sum3==sum1)

printf("%d\n", i);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: