没有合适的资源?快使用搜索试试~ 我知道了~
2009年全国信息学奥林匹克竞赛提高组复赛题解
资源推荐
资源详情
资源评论
提高组复赛题解
1. 潜伏者
(spy.pas/c/cpp)
【问题描述】
国和 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。
历经艰险后,潜伏于 国的 国间谍小 终于摸清了 国军用密码的编码规则:
1、>>>>S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内
容与加密后所的内容均由大写字母‘A’—‘Z’构成(无空格等其他字
母)。
2、>>>>S 国对于每个字母规定了对应的“密字”。加密的过程就是将原信息中
的所有字母替换为其对应的“密字”。
3、>>>>每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”。
“密字”可以和原字母相同。
例如,若规定‘的密字为‘,‘ 的密字为‘(其他字母及密字略),则原信息
“被加密为“。
现在,小 通过内线掌握了 国网络上发送的一条加密信息及其对应的原信息。小
希望能通过这条信息,破译 国的军用密码。小 的破译过程是这样的:扫描原信息,对
于原信息中的字母 (代表任一大写字母),找到其在加密信息中的对应大写字母 ,并认
为在密码里 是 的密字。如此进行下去直到停止于如下的某个状态:
1、>>>>所有信息扫描完毕,‘A’—‘Z’所有 26 个字母在原信息中均出现过并
获得了相应的“密字”。
2、>>>>所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没
有出现。
3、>>>>扫描中发现掌握的信息里有明显的自相矛盾或错误(违反 S 过密码
的编码规则)。例如某条信息“XYZ”被翻译为“ABA”就违反了“不同
字母对应不同密字”的规则。
在小 忙得头昏脑胀之际, 国司令部又发来电报,要求他翻译另外一条从 国刚刚
截取到的加密信息。现在请你帮助小 :通过内线掌握的信息,尝试破译密码。然后利用
破译的密码,翻译电报中的加密信息。
【输入】
输入文件名为 ,共 行,每行为一个长度在 到 之间的字符串。
第 行为小 掌握的一条加密信息。
第 行为第 行的加密信息所对应的原信息。
第 行为 国司令部要求小 翻译的加密信息。
输入数据保证所有字符串仅由大写字母‘ 构成,且第 行长度与第 行相等。
【输出】
输出文件 !"# 共 行。
若破译密码停止时出现 , 两种情况,请你输出“$%&'((不含引号,注意首字母大
写,其它小写)。
否则请输出利用密码翻译电报中加密信息后得到的原信息。
【输入输出样例 】
spy.in spy.out
)*)
$%&'(
【输入输出样例 说明】
原信息中的字母‘和‘对应相同的密字,输出“$%&'(。
【输入输出样例 】
spy.in spy.out
+*),-./0123$4 56
4)$3210/7+,.6*5-
4/)*
$%&'(
【输入输出样例 说明】
字母‘ 在原信息中没有出现,输出“$%&'(。
【输入输出样例 】
spy.in spy.out
7, 10$/+-6*5.)432/71$+).-4.7
- 4*2/6$.)015+73,0-0 *//6*7+1$3+-//
$/
8888这个题就不说了吧,需要注意的是不仅要判断一个密字对应多个原信息的情况,还
要判断一个原信息对应多个密字的情况。如:原信息,密字;和原信息,密字
,这两种情况是不同的,要分别判断。
附程序:>>>>>
9!:9%;"#<!"#"#=
>%9
%<?%99%@AAA AB!CDE%9=
#<#<##9:=
<F<#':'9=
DEDE%9=
9!D'("9'G!9H=
?':
G9#'&A$%&'(A=
D&!'"#=D&!'!"#"#=
E%&#=
'(=
?':
%:"#<AA=%:!"#"#<A!"#A=
9''#"#=9'G9#'!"#"#=
9'%(&#=9'%(&#=9'%(&#=
I&':#E#=
C!9DEIAA#!A A(!
888?':
88888%@DEBIAJA=
88888?@DEBIAJA=
888'(=
C!9I#!(!
888C%@#@BBIAJA%(?@#@BBIAJA!9%@#@BBI#@B#E'
88888?':
8888888%@#@BBI#@B=
8888888?@#@BBIAKA=
88888'(
88888'&'G!9H=
C!9DEIAA#!A A(!
888C?@DEBIAJA#E'G!9H=
C!9I#!&':#E#(!
888G9#'%@#@BB=
G9#'&=
D&!'"#=D&!'!"#"#=
'(
NOIP2009 提高组复赛第一题>潜伏者>C 语言
#include "stdio.h"
char m[100],y[100],c_s[100],o_s[100];
/*从文件读入数据到数组*/
void input()
{
FILE *fp;
fp=fopen("apple.in","r");
fscanf(fp,"%s %s %s",m,y,c_s);
fclose(fp);
}
/*写结果文件*/
void output(int zt)
{
剩余15页未读,继续阅读
资源评论
zxxdyx0124
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功