专项训练:函数(二) 建议答题时长:60min
1. 编程题

Vigenère密码

题目描述

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=m_i® k_i,运算® $的规则如下表所示:

Vigenère加密在操作时需要注意:

1.®运算忽略参与运算的字母的大小写,并保持字母在明文M中的大小写形式;

2.当明文M的长度大于密钥 k 的长度时,将密钥 k 重复使用。

例如,明文M=Helloworld,密钥k=abc时,密文C=Hfnlpyosnd。

输入

第一行为一个字符串,表示密钥 k,长度不超过100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。

输出

输出共1行,一个字符串,表示输入密钥和密文所对应的明文。

输入样例

CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm

输出样例

Wherethereisawillthereisaway
A
B
C
D
查看答案
2. 编程题

素数对

题目描述

两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。

输入

一个正整数n(1≤n≤10000)。

输出

所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。

输入样例

100

输出样例

3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73
A
B
C
D
查看答案
3. 编程题

笨小猴

题目描述

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn−minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

输入

只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。

输出

共两行,

第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;

第二行是一个整数,如果输入单词是Lucky Word,输出maxn−minn的值,否则输出0 。

输入样例

error

输出样例

Lucky Word
2
A
B
C
D
查看答案
4. 编程题

二进制分类

题目描述

若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。

例如:

(13)10=(1101)2,其中1的个数为3,0的个数为1,则称此数为A类数;

(10)10=(1010)2,其中1的个数为2,0的个数也为2,称此数为B类数;

(24)10=(11000)2,其中1的个数为2,0的个数为3,则称此数为B类数;

程序要求:求出1∼1000之中(包括1与1000),全部A、B两类数的个数。

输入

输出

一行,包含两个整数,分别是A类数和B类数的个数,中间用单个空格隔开。

A
B
C
D
查看答案
试题目录
编程题
1 2 3 4
赣ICP备20007335号-2