第五次上机题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、最长平台
Description
已知一个已经从小到大排列好的数组,所谓这个数组中的一个平台,就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6 中 1、2,2、3,3,3、4、5,5、6 都是平台。试编写一个程序,接收一个数组,输出这个数组中所有平台和最长平台的个数与长度。
Input
本题有多组输入数据。第一行是输入数据的组数T,每组数据有两行,第一行是一个整数n,表示下一行有n个数据输入,每个输入数据后有一个空格。1<=T<=20,1<=n<=1000。
Output
对应每组数据,应输出两行,第一行是两个用空格隔开的数(注意该行尾没有空格),第一个数表示最长平台的个数,第二个数表示最长平台的长度,第二行是所有的平台,平台应按在数组中出现的顺序输出,最后一个平台后没有空格。
Sample Input
1
10
1 2 2 3 3 3 4 5 5 6
Sample Output
1 3
{1},{2,2},{3,3,3},{4},{5,5},{6}
二、成绩统计
Description
读入一组学生的成绩(成绩为百分制,均为整数,人数不超过1000人),查找给定成绩区间内的学生人数。 Input
输入第一行是整数T,表示后面测试数据的组数。对于每组数据,第一行是整数n,表示下面一行有n个0到100之间的整数(学生成绩)。再下一行是整数m(m<30),表示随后有m行整数,每行整数由两个整数a和b构成,a与b之间有一个空格,表示要查找的分数区间,且a<=b。两组测试数据之间有一个空行。
Output
对于每一组区间,输出位于该区间学生的人数,占一行。在每组测试数组后输出一个空行。
Sample Input
2
10
12 67 87 100 0 45 88 99 97 67
6
0 100
67 67
11 90
12 88
90 95
45 67
51
85 72 38 80 69 65 68 96 22 49 67 51 61 63 87 66 24 80 83 71 60 64 52 90 60 49 31 23 99 94 11 25 24 51 15 13 39 67 97 19 76 12 33 99 18 92 35 74 0 95 71
3
33 39
32 37
45 57
Sample Output
10
2
6
6
3
4
2
5
三、置换与循环
Description
任给两个1~n的排列,两个排列构成了一个双射(实际这就是一个置换)。经过交换,第一个排列总可以写为 (1,2,...,n),记第2个排列为 (b1,b2,...,bn),则1映射为b1,2映射为b2,...,n映射为bn。实际上,一个置换可以写成一系列循环的积。举一个例子:(1,2,3,4,5)和(4,2,1,3,5),1映射为4,4映射为3,而3又被映射为1,这是该置换的第一个循环(1,4,3) ;2被映射为2,这是第二个循环(2);5被映射为5,这是第三个循环(5),所以该置换可以表示为(1,4,3)(2)(5)。
你的任务是对于任意给定的置换,把该置换表示为一系列循环的积。
由于循环(1,4,3)与循环(4,3,1),(3,1,4)等价,我们要求输出循环时,总是以最小元素开始。另外,不同循环可以交换次序,为保证唯一,要求按循环的第一元素从小到大输出。
Input
有多组测试数据。输入的第一行是数据组数T(1 Output 对应每组数据,输出一行该置换的循环积。 Sample Input 3 7 1 2 3 4 5 6 7 6 1 7 2 5 3 4 4 1 2 3 4 4 3 1 2 4 1 2 3 4 1 3 2 4 Sample Output (1,6,3,7,4,2)(5) (1,4,2,3) (1)(2,3)(4) 四、易位法字符串解密 Description 密码学是一门既古老又年轻的学科。说它古老,是因为早在几千年前,人类就已经有了通信保密的思想,并先后出现了易位法和置换法等加密方法。到了1949年,信息论的创始人香农(C.E.Shannon)论证了由传统的加密方法所获得的密文,几乎是都可攻破的,这使得密码学的研究面临着严重的危机。 直至进入20世纪60年代,由于电子技术和计算机技术的迅速发展,以及结构代数、可计算性理论学科研究成果的出现,才使密码学的研究走出困境而进入了一个新的发展时期;特别是美国的数据加密标准DES和公开密钥密码体制的推出,又为密码学的广泛应用奠定了坚实的基础。 虽然加密方法很多,但最基本的加密方法只有两种,即易位法和置换法,其它方法大多是基于这两种方法形成的。易位法是按照一定的规则,重新安排明文中的比特或字符的顺序来形成密文,而字符本身保持不变。按易位单位的不同又可分成比特易位和字符易位两种易位方式。前者的实现方法简单易行,并可用硬件实现,主要用于数字通信中;而后者即字符易位法则是利用密钥对明文进行易位后形成密文。 具体方法是:假定有一密钥DCAB,其长度为4,字符串为I love China,去掉空格,四位四位分组,不足四位时用e补齐。具体见下图所示。输出时转化为大写输出。注意分组时先去掉了空格,取列时按密钥的ASCII码从小到大取,输出时英文字母全转换为了大写。 你的任务是把加密后的密文还原为明文。 Input 本题有多组输入。第一行数字T表示输入的组数,每一组有两行,第一行是密钥字符串,长度不超过20个(保证字符不重复);第二行是已加密的字符串,不多于1000个。 Output 对应每一组,输出有一行,为解密后的字符串。 Sample Input 1 DCAB OHEVIELCAIEN Sample Output ILOVECHINAEE 五、Flagstone Description In the Qingshuihe Campus of UESTC, the most annoy problem to students are the flagstone path on the lawn. The designer seems so stupid that the flagstone path often make students step in the gap. Now a perfect step is wanted in order to not step in any gaps and step on every flagstone. The step length is required to be constant while the length of the flagstone and gap are given different. The problem is asking you to tell the minimum length of the perfect step. To simplify the question, the foot is considered to be a point and the very beginning is the fore edge of the first flagstone, which also means the first flagstone has already been stepped on. Input The first line of the input contains one integer T, which indicate the number of test cases. In each test case, the first line contains an integer N(2<=N<=1e5), indicating the number of flagstone. Following N lines, and each line is the length of one flagstone. And the following N-1 lines are the length of the gaps. All data is integer. All the length will be a positive integer, and the sum of them will fit in a 32bit signed integer. Output One line for each test case contains only one number indicating the answer. One real number indicating the perfect step length should be accurate to two digits after the radix point. If it is impossible to find out a perfect step, just output “impossible” ! Sample Input 2 2 10 20