全国信息学奥林匹克联赛( NOIP2007)复赛 提高组
第1页 共5页
全国信息学奥林匹克联赛 (NOIP2007)复赛
提高组
题目一览
题目名称 统计数字 字符串的展开 矩阵取数游戏 树网的核
代号 count expand game core
输入文件 count.in expand.in game.in core.in
输出文件 count.out expand.out game.out core.out
时限 1秒 1秒 1秒 1秒
(2007年11月17日 3小时完成)
说明:
1. 文件名(程序名和输入输出文件名) 必须使用小写
2. C/C++中函数main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
3. 全国统一评测时 采用的机器参考配置为:CPU 2.0GHz,内存256M。
1.统计数字
(count.pas/c/cpp)
【问题描述】
某次科研调查时得到了 n个自然数,每个数均不超过 1500000000(1.5*10
9
)。已知不相同的数
不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统
计结果。
【输入】
输入文件 count.in包含n+1行:
第1行是整数 n,表示自然 数的个数。
第2~n+1行每行一个自然数 。
【输出】
输出文件 count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大
的顺序输出 。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
【输入输出样例】
count.in count.out
8
2
4
2
4
5
100
2 3
4 2
5 1
100 2
全国信息学奥林匹克联赛( NOIP2007)复赛 提高组
第2页 共5页
2
100
【限制】
40%的数据满足:1<=n<=1000
80%的数据满足:1<=n<=50000
100%的数据满足:1<=n<=200000,每个数均不超过 1 500 000 000(1.5*10
9
)
2.字符串的展开
(expand.pas/c/cpp)
【问题描述】
在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输
入的字符串中,含有类似于“ d-h”或“4-8”的子串,我们就把它当作一种简写,输出时,用连续
递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为“ defgh”和“45678”。在
本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:
(1)遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“ -”,减号两侧
同为小写字母或同为数字,且按照 ASCII码的顺序,减号右边的字符严格大于左边的字符。
(2)参数p1:展开方式 。p1=1时,对于字母子串,填充小写字母; p1=2时,对于字母
NOIP2007提高组复赛试题,2007年NOIP信息学奥赛提高组复赛C++真题