- 12
- 0
- 约5.93千字
- 约 8页
- 2024-01-04 发布于四川
- 举报
全国信息学奥林匹克联赛(NOIP2009)复赛提高组
第PAGE7页共NUMPAGES8页
全国信息学奥林匹克联赛(NOIP2009)复赛
提高组
(请选手务必仔细阅读本页内容)
题目概况
中文题目名称
潜伏者
Hankson的趣味题
最优贸易
靶形数独
英文题目名称
spy
son
trade
sudoku
可执行文件名
spy
son
trade
sudoku
输入文件名
spy.in
son.in
trade.in
sudoku.in
输出文件名
spy.out
son.out
trade.out
sudoku.out
每个测试点时限
1秒
1秒
1秒
2秒
测试点数目
10
10
10
20
每个测试点分值
10
10
10
5
附加样例文件
有
有
有
有
结果比较方式
全文比较
过滤行末空格
及文末回车
全文比较
过滤行末空格
及文末回车
全文比较
过滤行末空格
及文末回车
全文比较
过滤行末空格
及文末回车
题目类型
传统
传统
传统
传统
提交源程序文件名
对于pascal语言
spy.pas
son.pas
trade.pas
sudoku.pas
对于C语言
spy.c
son.c
trade.c
sudoku.c
对于C++语言
spy.cpp
son.cpp
trade.cpp
sudoku.cpp
编译命令(不包含任何优化开关)
对于pascal语言
fpcspy.pas
fpcson.pas
fpctrade.pas
fpcsudoku.pas
对于C语言
gcc–ospyspy.c-lm
gcc–osonson.c-lm
gcc–otradetrade.c-lm
gcc–osudokusudoku.c-lm
对于C++语言
g++-ospyspy.cpp-lm
g++-osonson.cpp-lm
g++-otradetrade.cpp-lm
g++-osudokusudoku.cpp-lm
运行内存限制
内存上限
128M
128M
128M
128M
注意事项
文件名(程序名和输入输出文件名)必须使用小写。
C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
全国统一评测时采用的机器配置为:CPU1.9GHz,内存1G,上述时限以此配置为准。各省在自测时可根据具体配置调整时限。
潜伏者
(spy.pas/c/cpp)
【问题描述】
R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。
历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则:
S国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所的内容均由大写字母‘A’—‘Z’构成(无空格等其他字母)。
S国对于每个字母规定了对应的“密字”。加密的过程就是将原信息中的所有字母替换为其对应的“密字”。
每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”。“密字”可以和原字母相同。
例如,若规定‘A’的密字为‘A’,‘B’的密字为‘C’(其他字母及密字略),则原信息“ABA”被加密为“ACA”。
现在,小C通过内线掌握了S国网络上发送的一条加密信息及其对应的原信息。小C希望能通过这条信息,破译S国的军用密码。小C的破译过程是这样的:扫描原信息,对于原信息中的字母x(代表任一大写字母),找到其在加密信息中的对应大写字母y,并认为在密码里y是x的密字。如此进行下去直到停止于如下的某个状态:
所有信息扫描完毕,‘A’—‘Z’所有26个字母在原信息中均出现过并获得了相应的“密字”。
所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
扫描中发现掌握的信息里有明显的自相矛盾或错误(违反S过密码的编码规则)。例如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。
在小C忙得头昏脑胀之际,R国司令部又发来电报,要求他翻译另外一条从S国刚刚截取到的加密信息。现在请你帮助小C:通过内线掌握的信息,尝试破译密码。然后利用破译的密码,翻译电报中的加密信息。
【输入】
输入文件名为spy.in,共3行,每行为一个长度在1到100之间的字符串。
第1行为小C掌握的一条加密信息。
第2行为第1行的加密信息所对应的原信息。
第3行为R国司令部要求小C翻译的加密信息。
输入数据保证所有字符串仅由大写字母‘A’—‘Z’构成,且第1行长度与第2行相等。
【输出】
输出文件spy.out共1行。
若破译密码停止时出现2,3两种情况,请你输出“Failed”(不含引号,注意首字母
原创力文档

文档评论(0)