1、编程之美初赛第二场题目 1 : 神奇的数列时间限制:2000ms单点时限:1000ms内存限制:256MB描述大神同学是一个热爱数字的孩子,她无时无刻不在思考生活与数学的联系。有一天,她发现其实公历的设计是有讲究的。每 4 年就会多闰一天,每一百年又会有一年不是闰年,而第四百年又是闰年。这样,这四百年的周期里每一年平均有 365 又 400 分之 97 天。大神同学将上面的规律简记为 100-4+1=97。大神同学想知道是不是每一个自然数都能按照上面的形式表示出来,具体来说就是,大神同学希望将一个自然数 N 写成 A1 - A2 + A3 - A4 + 的形式,其中A1 是 A2 的倍数,A
2、2 是 A3 的倍数,依此类推。另外,大神同学不想让这个问题变得太无聊,她还增加了一些附加条件:1. 其中 Ai Aj (i j),即相邻的两个数前一个至少是后一个的两倍或以上。2. 数列的长度至少为 3,不能超过 100(大神同学觉得数列太长一定可以找到答案)。3. 构造出来的数列中的每一个数不能太大,因此大神同学希望数列中的每一个数都是小于263 的正整数。大神同学思考了一会儿,发现这个问题似乎没有那么简单,现在她求助于你,希望你能帮她解决这个不太简单的问题。输入第一行包括一个数 T,表示数据的组数。接下来包含 T 组数据,每组数据一行,包括一个整数 N。输出对于每组数据,输出一行“Cas
3、e X: ”,其中 X 表示每组数据的编号(从 1 开始),后接一个字符串“no solution”表示无解,或者输出一列数A i,相邻两个数之间用空格隔开。如果有多组数列满足要求,输出任意一组。数据范围小数据:1 T 101 N 100大数据:1 T 10001 N 1018样例输入2197样例输出Case 1: no solutionCase 2: 100 4 1题目 2 : 字符串压缩时间限制:8000ms单点时限:4000ms内存限制:256MB描述你的硬盘上有一个神秘的文件占用了大量空间,你决定将其压缩以节省空间。不幸的是,你还没有安装任何压缩软件,所以你决定自己编写一个压缩程序。你
4、发现这是一个文本文件,包括很多行。每行是一个长度恰好为 L 的字符串,而且字符串可能有重复。行的顺序并不重要,换言之,打乱顺序之后仍然可以认为文件内容和原来相同。例如,这个文件的内容可以是这样的:barcarbatcatcat经过一段时间观察,你发现同一列的字符往往是相同的,于是你设计了一个简单的压缩框架。首先以某种策略调整行的顺序,然后把所有字符串按照先列后行的顺序变换成单个字符串,例如上面的例子,不调整顺序则直接变换成:bcbccaaaaarrttt然后使用游程编码(RLE)的到压缩变换后的字符串:1b1c1b2c5a2r3t当然也可以先调换顺序:carcatcatbatbar这样的压缩字
5、符串为:3c2b5a1r3t1r比不调整顺序的稍短一些。现在,你已经得到了两个不同的压缩字符串,你想知道他们解压后的文件是否相同,请写一个程序解决这个问题。输入第一行是一个整数 T (T = 30),表示测试数据组数。每组测试数据占三行。第一行为整数 L,表示原始文件中每一行字符串的长度。第二行和第三行分别是两个压缩字符串,格式如 c1 n1 c2 n2 cMnM,表示字符 ci 连续出现了 ni 次。具体格式见样例。输入字符串只含 a 到 z 的小写字母,确保压缩字符串合法有效,且不为空。输出对每组测试数据,首先输出”Case x: ”,其中 x 表示测试数据编号。如果两个压缩字符串对应于相
6、同的文件内容,则输出”Yes” ,否则输出”No”。数据范围小数据:1=L=10, 1=ni=100,压缩字符串长度不超过 104大数据:1=L=1000, 1=ni=109,压缩字符串长度不超过 106样例输入231b1c1b2c5a2r3t3c2b5a1r3t1r220a20b10a20b10a20a20b20a20b样例输出Case 1: YesCase 2: No题目 3 : 集合时间限制:12000ms单点时限:6000ms内存限制:256MB描述统计满足下列条件的集合对(A, B)的数量: A,B 都是1, 2, , N的子集; A,B 没有公共的元素; f(A)= f(B)。f(S)定义为 S 中所有元素的按位异或和。例如, f() = 0, f(1, 3) = 2。因为答案可能很大,你只需要求出它除以 M 的余数。输入第一行一个整数 T (1 T 10),表示数据组数。接下来是 T 组输入数据,测试数据之间没有空行。每组数据格式如下:仅一行,2 个整数 N 和 M (1 M 108)。输出对每组数据,先输出“Case x: ”,然后接一个整数,表示所求的结果。数据范围小数据:1 N 20大数据:1 N 212样例输入13 100000000样例输出Case 1: 18