全国信息学奥林匹克联赛( NOIP2012)复赛 提高组 day1
第1页 共7页
CCF全国信息学奥林匹克联赛 (NOIP2012)复赛
提高组 day1
(请选手务必仔细阅读本页内容)
一.题目概况
中文题目名称 Vigenère密码 国王游戏 开车旅行
英文题目与子目录名 vigenere game drive
可执行文件名 vigenere game drive
输入文件名 vigenere.in game.in drive.in
输出文件名 vigenere.out game.out drive.out
每个测试点时限 1秒 1秒 1秒
测试点数目 10 10 20
每个测试点分值 10 10 5
附加样例文件 有 有 有
结果比较方式 全文比较(过滤行末空格及文末回车 )
题目类型 传统 传统 传统
二.提交源程序文件名
对于C++语言 vigenere.cpp game.cpp drive.cpp
对于C语言 vigenere.c game.c drive.c
对于pascal语言 vigenere.pas game.pas drive.pas
三.编译命令(不包含任何优化开关)
对于C++语言 g++ -o vigenere
vigenere.cpp -lm
g++ -o game
game.cpp -lm
g++ -o drive
drive.cpp -lm
对于C语言 gcc-o vigenere
vigenere.c -lm
gcc-o game game.c
-lm
gcc-o drive drive.c
-lm
对于pascal语言 fpc vigenere.pas fpc game.pas fpc drive.pas
四.运行内存限制
内存上限 128M 128M 128M
注意事项:
1、文件名(程序名和输入输出文件名) 必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
3、全国统一评测时采用的机器配置为: CPU Intel Core2 Quad Q8200 2.33GHz, 内存2G,上
述时限以此配置为准。
4、特别提醒:评测在 NOI Linux下进行。
全国信息学奥林匹克联赛( NOIP2012)复赛 提高组 day1
第2页 共7页
1.Vigenère密码
(vigenere.cpp/c/pas)
【问题描述】
16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法 ——Vigenère密
码。Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为
南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用 M表示;称加密后的信息为密文,用
C表示;而密钥是一种参数, 是将明文转换为密文或将密文转换为明文的算法中输入的数 据,
记为k。 在Vigenère密码中,密钥k是一个字母串, k=k1k2…kn。当明文M=m1m2…mn时,
得到的密文C=c1c2…cn,其中ci=mi®ki,运算®的规则如下表所示:
Vigenère加密在操作时需要 注意:
1. ®运算忽略参与运算的字母的
NOIP2012提高组复赛试题day1,2012年NOIP信息学奥赛提高组复赛C++真题day1