zoukankan      html  css  js  c++  java
  • 2014编程之美初赛第二场

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/user_longling/article/details/24182657

    题目1 : 奇妙的数列

    时间限制:2000ms
    单点时限:1000ms
    内存限制:256MB

    描写叙述

    大神同学是一个热爱数字的孩子。她无时无刻不在思考生活与数学的联系。有一天,她发现事实上公历的设计是有讲究的。

    每4年就会多闰一天,每一百年又会有一年不是闰年。而第四百年又是闰年。

    这样。这四百年的周期里每一年平均有365又400分之97天。

    大神同学将上面的规律简记为100-4+1=97。

    大神同学想知道是不是每个自然数都能依照上面的形式表示出来,详细来说就是,大神同学希望将一个自然数N写成A1 - A2 + A3 - A4 + …的形式。当中

    A1是A2的倍数。A2是A3的倍数,依此类推。

    另外,大神同学不想让这个问题变得太无聊,她还添加了一些附加条件:

    1. 当中Ai ≠ Aj (i ≠ j)。即相邻的两个数前一个至少是后一个的两倍或以上。

    2. 数列的长度至少为3。不能超过100(大神同学觉得数列太长一定能够找到答案)。

    3. 构造出来的数列中的每个数不能太大。因此大神同学希望数列中的每个数都是小于263的正整数。

    大神同学思考了一会儿,发现这个问题似乎没有那么简单,如今她求助于你。希望你能帮她解决这个不太简单的问题。


    输入

    第一行包含一个数T。表示数据的组数。

    接下来包含T组数据。每组数据一行,包含一个整数N。


    输出

    对于每组数据,输出一行“Case X: ”。当中X表示每组数据的编号(从1開始),后接一个字符串“no solution”表示无解。或者输出一列数{Ai},相邻两个数之间用空格隔开。假设有多组数列满足要求,输出随意一组。


    数据范围

    小数据:

    1 ≤ T ≤ 10

    1 ≤ N ≤ 100


    大数据:

    1 ≤ T ≤ 1000

    1 ≤ N ≤ 1018



    例子输入
    2
    1
    97
    
    例子输出
    Case 1: no solution
    Case 2: 100 4 1



    题目2 : 字符串压缩

    时间限制:8000ms
    单点时限:4000ms
    内存限制:256MB

    描写叙述

    你的硬盘上有一个神奇的文件占用了大量空间。你决定将其压缩以节省空间。不幸的是,你还没有安装不论什么压缩软件,所以你决定自己编写一个压缩程序。你发现这是一个文本文件,包含非常多行。每行是一个长度恰好为L的字符串。并且字符串可能有反复。行的顺序并不重要。换言之,打乱顺序之后仍然能够觉得文件内容和原来同样。

    比如,这个文件的内容能够是这种:

    bar

    car

    bat

    cat

    cat


    经过一段时间观察,你发现同一列的字符往往是同样的,于是你设计了一个简单的压缩框架。首先以某种策略调整行的顺序,然后把全部字符串依照先列后行的顺序变换成单个字符串。比如上面的例子。不调整顺序则直接变换成:

    bcbccaaaaarrttt

    然后使用游程编码(RLE)的到压缩变换后的字符串:

    1b1c1b2c5a2r3t

    当然也能够先调换顺序:

    car

    cat

    cat

    bat

    bar

    这种压缩字符串为:

    3c2b5a1r3t1r

    比不调整顺序的稍短一些。

    如今,你已经得到了两个不同的压缩字符串,你想知道他们解压后的文件是否同样。请写一个程序解决问题。


    输入

    第一行是一个整数T (T <= 30)。表示測试数据组数。

    每组測试数据占三行。

    第一行为整数L,表示原始文件里每一行字符串的长度。第二行和第三行各自是两个压缩字符串。格式如c1 n1 c2 n2 … cMnM,表示字符ci连续出现了ni次。详细格式见例子。输入字符串仅仅含a到z的小写字母,确保压缩字符串合法有效,且不为空。


    输出

    对每组測试数据,首先输出”Case x: ”,当中x表示測试数据编号。

    假设两个压缩字符串相应于同样的文件内容。则输出”Yes”。否则输出”No”。


    数据范围

    小数据:1<=L<=10, 1<=ni<=100,压缩字符串长度不超过10^4

    大数据:1<=L<=1000, 1<=ni<=10^9,压缩字符串长度不超过10^6



    例子输入
    2
    3
    1b1c1b2c5a2r3t
    3c2b5a1r3t1r
    2
    20a20b10a20b10a
    20a20b20a20b
    
    例子输出
    Case 1: Yes
    Case 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



    例子输入
    1
    3 100000000
    
    例子输出
    Case 1: 18

  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/llguanli/p/9889930.html
Copyright © 2011-2022 走看看