NOIP2014提高组复赛精彩试题(卷)

合集下载

2014noip复赛模拟练习16

2014noip复赛模拟练习16

1. 喜羊羊运动会——训练时间。

题目描述:这次运动会开幕式要进行团体操表演,于是喜羊羊召集大家紧锣密鼓地训练了起来,懒羊羊也在被召集之列。

喜羊羊规定了每天的训练时间,只准早到,不许迟到,而且喜羊羊会做相关记录。

这下懒羊羊可惨了,他虽然设定了闹钟,可是他动作慢,老迟到。

现给出若干天的规定到场时间与懒羊羊的到场时间记录,判断每天懒羊羊有无及时赶到训练场,以及迟到或早到的时间。

输入:文件名timer1.in每两行时间为一组,每组中的第一行时间为规定的训练时间,第二行为懒羊羊到达训练场的时间。

每行有两个整数H和M,H是以24小时记时法表示的小时数(0 <= H <= 24),M表示分钟数(0 <= M <= 59)。

每组中的两个时间表示的是同一天的两个时间。

若干组时间后以-1表示结束。

输出:timer1.out若干行,如果这一天懒羊羊及时到达了训练场,则输出‘Yes’及早到的分钟数;如果没有及时到达,则输出‘No’及迟到的分钟数。

样例输入:14 30↙14 25↙8 0↙9 0↙13 10↙12 50↙7 25↙7 25↙-1样例输出:Yes 5↙No 60↙Yes 20↙Yes 0提示:输入输出说明:第一天第二天第三天第四天规定训练时间14:30 8:00 13:10 7:25到场时间14:25 9:00 12:50 7:25有无及时到达Yes No Yes Yes早到或迟到分钟数 5 60 20 02.题目描述:懒羊羊在前一阵准备羊村的小高考复习时表现出了罕见的勤奋,现在他得知了小高考四门必修课的成绩,他想知道根据羊村的高考政策,他在羊村高考中能加几分。

羊村高考政策如下:分数段等级成绩>=90 A90>成绩>=75 B75>成绩>=60 C成绩<60 D每得一个A,可在羊村高考中加1分,若得4A,则可以加5分。

当然,只要有一门功课得D,那么就将失去羊村高考资格。

NOIP历年复赛提高组试题(2006-2014)

NOIP历年复赛提高组试题(2006-2014)

第十二届全国信息学奥林匹克分区联赛(NOIP2006)复赛试题(提高组竞赛用时:3小时)关于竞赛中不同语言使用限制的说明一.关于使用Pascal语言与编译结果的说明1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。

2.允许使用数学库(uses math子句),以及ansistring。

但不允许使用编译开关(最后测试时pascal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。

二.关于C++语言中模板使用的限制说明1.允许使用的部分:标准容器中的布尔集合,迭代器,串,流。

相关的头文件:<bitset > <iterator > <string > <iostream >2.禁止使用的部分:序列:vector,list,deque序列适配器:stack, queue, priority_queue 关联容器:map, multimap, set, multiset 拟容器:valarray 散列容器:hash_map, hash_set, hash_multimap, hash_multiset 所有的标准库算法相关头文件:<vector > <list > <deque > <stack > <map > <set > <algorithm >1.能量项链(energy.pas/c/cpp)【问题描述】在Mars星球上,每个Mars人都随身佩带着一串能量项链。

在项链上有N颗能量珠。

能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。

并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。

因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。

Noip2014初赛提高组C试题及答案(完整版)

Noip2014初赛提高组C试题及答案(完整版)

Noip2014初赛提高组试题及答案(完整版)提高组C语言试题、单项选择题(每题1.5分,共22.5分)。

A. 162.105.128.27B. 192.168.0.1C. 256.256.129.1D. 10.0.0.16. 在无向图中,所有定点的度数之和是边数的()倍.A. 0.5B. 1C. 2D. 47. 对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为().A. n/2B. (n+1)/2C. (n-1)/2D. n/48. 编译器的主要功能是().A. 将一种高级语言翻译成另一种高级语言B. 将源程序翻译成指令C. 将低级语言翻译成高级语言D. 将源程序重新组合9. 二进制数111.101所对应的十进制数是().A. 5.625B. 5.5C. 6.125D. 7.62510. 若有变量int a, float x, y,且a=7, x=2.5, y=4.7,则表达式x+a%3*(int)(x+y)%2/4 的值大约是().A. 2.500000B. 2.750000C. 3.500000D. 0.00000011. 有以下结构体说明和变量定义,如图所示,指针结点。

data nextr data n ext* -data n ext1. 以下哪个是面向对象的咼级语言().A.汇编语言B. C++C. FORTRAN2. 1TB代表的字节数量是().A. 2的10次方B. 2的20次方C. 2的3. 二进制数00100100 和00010101 的和是().A. 00101000B. 001010100C. 010001014. TCP协议属于哪一层协议().A.应用层B.传输层C.网络层D.D. Basic30次方D. 2的40次方D. 00111001数据链路层).P、q、r分别指向一个链表中的三个续struct node {int data;struct node *n ext;} *P ,*q,*r;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是().A. q->n ext = r->n ext; p-> n ext = r; r->n ext = q;B. p->n ext = r; q->n ext = r->n ext; r->next = q;C. q->next = r->n ext; r->n ext = q; p->n ext = r;D. r->next = q; q->next = r->n ext; p->n ext = r;12. 同时查找2n个数中的最大值和最小值,最少比较次数为A. 3(n-2)/2B. 4n-2C. 3n-2D. 2n-213. 设G是有6个结点的完全图,要得到一颗生成树,需要从().G中删去()条边.A. 6B. 9C. 10D. 1514. 以下时间复杂度不是 0(n 1 2 3 4 5)的排序方法是().A. 插入排序B. 归并排序C. 冒泡排序15. 以下程序实现了找第二小元素的算法。

2014noip复赛模拟练习1

2014noip复赛模拟练习1

1.【问题描述】请统计某个给定范围[L,R]的所有整数中,数字N出现的次数。

【输入格式】共1行,为三个正整数L、R和N,之间用空格隔开。

(1≤L≤R≤10000)。

【输出格式】仅1行,表示数字N出现的次数。

如输入2 22 2 则输出62.用自然数1,2,3,4,5,。

构成连续数1234567891011…9899100101…从键盘输入整数m(20000m),输出第m位数字。

样例输入输出:输入:m=15输出:23. 聪明的囚犯:传说从前有一个残暴的国王,喜欢杀戮百姓。

有一次,他抓到30个百姓并要一一杀掉。

在这30个百姓中间有一个聪明人,他站出来对国王说:“请国王打发慈悲,赦免两个人不死。

”国王问:“赦免哪两个人不死?”那个聪明人回答说:“我们30个人围成一圈,从1开始报数,凡数到5的人就拉出去杀掉,剩下的人继续从1开始报数,循环反复,直到剩下两个人为止,这两个人被赦免。

”国王一听很有意思,就同意了聪明人的建议,叫这30个百姓围成一圈,依依报数,凡数到5的就杀掉。

最后只剩下两个人没有被杀掉,而聪明人就是其中之一。

编写程序,输入N个百姓,由计算机判断一下,聪明人要站在什么位置,才能躲过这场屠杀。

如输入N=30则输出14 34. 算盘,这个古老的计算工具是我国古代的重要发明。

在算盘上,一个档相当于整数的一位,高位在左边,所以,从右向左数,各档依次表示个位、十位、百位、……,在每个档上,靠框的珠不参与计数,靠梁的珠参与计数,且梁上面的珠每个表示5,梁下面的珠每个表示1,并规定0用本档上所有的珠都靠框来表示。

根据这个规则,上面的算盘就表示拨入了一个整数123456789(其它的档,认为是0)。

算盘的初始状态是所有的珠都靠框,即所有档上都是0。

请编写程序计算一下,从初始状态拨入一个整数n(位数≤17),一共需要拨动多少个珠?样例输入:8102 样例输出:75. 现在有一个长度为N(1<=N<=1000)的并且每个数只可能是1或2或3的数列,求至少要交换多少次,才能得到一个升序的序列。

2014noip复赛模拟练习10

2014noip复赛模拟练习10

1. 喜羊羊运动会——撑杆跳高:运动会马上就要开始了,撑杆跳高场地上,羊村的N(3 <= N <= 100 )个村民正排成一队有秩序地练习。

“好高啊,我都不知道自己能不能跳过去”,懒羊羊慢条斯理地说道。

“这么高,不知道最少要几只羊叠在一起才会够得着”,沸羊羊向来比较喜欢思考数学问题,这样说道。

试编一程序,计算出最少要几只羊叠在一起(一头羊踩在另一头羊的背上)才能够得着横杆(所谓够得着,指羊的身高总和不小于横竿的高度B)。

如果N头羊叠在一起,都够不着横竿,则输出“Impossible”【输入描述】第一行:两个整数N(3 <= N <= 100 )和B,表示队伍中羊的总数以及横竿的高度。

第二行:空格隔开的N个整数,表示每只羊的身高Hi (1 <= Hi <= 10000 )。

【输出描述】一行,一个整数,表示最少要几头羊才能够到横竿。

如果N只羊叠在一起都够不着则输出“Impossible”。

【输入样例】样例1:5 23↙6 8 1 3 9 样例2:6 16↙1 2 3 1 3 5 【输出样例】样例1:3 样例2:Impossible2. 在一棵树上有n只鸟。

由于感受到了自然的力量,它们希望学习自然数。

因此它们站在树上,演唱所有自然数。

自然数是从1开始的,按照递增的顺序演唱。

当演唱到K时,会有K只鸟受不了而飞走。

如果演唱到某个自然数而鸟数不足时,它们会从1开始重新演唱。

假设每秒钟它们都会演唱一个自然数,请你求一求,所有鸟都飞走需要多长时间。

如输入 3 输出2 输入 4 输出3【样例说明】第一秒,一只鸟飞走。

第二秒,两只鸟飞走。

第三秒时,需要三只鸟,但只剩一只鸟,因此它会从1开始演唱,并且飞走。

3. 彩票摇奖(LOTTERY.PAS) 为了丰富人民群众的生活、支持某些社会公益事业,北塔市设置了一项彩票。

该彩票的规则是:(1) 每张彩票上印有7 个各不相同的号码,且这些号码的取指范围为1~33。

2014noip复赛模拟练习2(答案)

2014noip复赛模拟练习2(答案)

1.某监狱里有个很长的走廊,走廊中一个接一个地有N个房间。

每个房间中锁着一个犯人。

一天夜里,狱警决定玩一个无聊游戏。

第1轮中,他喝了一口威士忌,然后打开每个房间。

第2轮,他喝了一口威士忌,然后按2的倍数遍历每个房间。

第3轮,他又喝了一口威士忌,然后遍历所有3的倍数的房间。

依次类推。

在遍历中,如果房间是锁着的,则打开;否则锁上。

他这样重复N轮,最终醉酒。

这时有些囚犯看到自己房间的锁被打开了,他们立即逃跑。

对于有N个房间的走廊,最终会有多少囚犯逃脱?输入:输入数据的第一行中有一个整数,表示有多少组测试数据。

接下来的若干行每行包含一个值为5-100的整数,这是房间的数目。

输出:对应输入数据输出多行,每行一个整数,表示逃脱的囚犯数量。

样例输入:25100样例输出:210var n,num,s,m,i,k,j:integer;a:array[0..200]of boolean;begin readln(num);for i:=1 to num dobegin readln(n);fillchar(a,sizeof(a),true);for j:=1 to n dofor k:=1 to n doif k mod j=0 then a[k]:=not a[k];s:=0;for j:=1 to n doif a[j]=false then inc(s);writeln(s);end;end. 输入3 10 35 50输出3 5 7输入3 22 68 99 输出 4 8 9输入5 10 30 60 85 100 输出 3 5 7 9 10一个自然数,若它的素因数至少是两重的(相同的素因数至少个数为二个,如:24=2*2*2*3,则称该数为“漂亮数”。

若相邻的两个自然数都是“漂亮数”,就称它们为“孪生漂亮数”,例如8和9就是一对“孪生漂亮数”。

输入X,Y,编程找出[X,Y]之间的所有“孪生漂亮数”。

如输入2 25,则输出8 924 25var i,n,a,t,x,y,s:longint; f :boolean;begin readln(x,y);a:=x;repeata:=a+1;n:=a;f:=false; i:= 2 ;while n >= i do begint:=0;while n mod i = 0 do begint:=t+1;n := n div i;end;if t>=2 then f:=true;i := i+1;end;if f then beginn:=a+1;f:=false; i:= 2 ;while n >= i do begint:=0;while n mod i = 0 do begint:=t+1;n := n div i;end;if t>=2 then f:=true;i := i+1;end; end;if f then begin s:=s+1; writeln(a,’‘,a+1);end;until a=y;readln;end.输入50 120输出63 64 75 76 80 81 98 99 99 100 116 117 120 121 输入354 480 输出360 361 363 364 368 369 。

2014noip复赛模拟练习7

2014noip复赛模拟练习7

1.有一种玩具,在玩具上有一个红色按钮,一个黄色按钮和一百个能坐能站的小木偶,按一次红色的按钮,就会有一个站着的小木偶坐下去,按一次黄色按钮,就可以使站着的小木偶增加一倍。

开始时有三个小木偶站着,要想使站着的小木偶增加到N个,最少按几次按钮就行了?每一次按哪个按钮?请编一程序,由键盘输入N(1≤N≤100),输出由1(按红色按钮)和2(按黄色按钮)组成的按钮次序及总次数。

如输入N = 21 输出 PRESS SEQUENCE :22121 PRESS TIMES :52.【问题描述】对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求。

【输入文件】输入文件divide_a.in的第1行包含两个正整数N,M,表示了数列A[i]的长度与每段和的最大值,第2行包含N个空格隔开的非负整数A[i],如题目所述。

【输出文件】输出文件divide_a.out仅包含一个正整数,输出最少划分的段数。

【样例输入】5 64 2 45 1 【样例输出】3【数据规模与约定】对于20%的数据,有N≤10;对于40%的数据,有N≤1000;对于100%的数据,有N≤100000,M≤109,M大于所有数的最小值,A[i]之和不超过109。

【样例说明】将数列如下划分:[4][2 4][5 1]第一段和为4,第2段和为6,第3段和为6均满足和不超过M=6,并可以证明3是最少划分的段数。

3.将合数483的各位数字相加(4+8+3)=15,如果将483分解成质因数相乘: 483=3*7*23,把这些质因数各位数字相加(3+7+2+3),其和也为15。

即某合数的各位数字之和等于它所有质因数的各数字之和。

求1-N之间具有上述特点的所有合数。

如输入N=100则输出 4 22 27 58 85 944.一个01串的集合,元素两两均不相同。

如果任意个元素都不是其它元素的前缀,那么这个集合就被称为可直接解密的。

2014noip复赛模拟练习15

2014noip复赛模拟练习15

1.【试题描述】有一组数(设有N个)。

编一程序交换这组数中任意指定的两段。

【输入描述】一个数N(不超过20个)一行N个数由空格分开两个空格分开的数(表示要交换的其中一段)两个空格分开的数(表示要交换的其中另一段)【输出描述】交换后的一行数(中间用空格隔开)【输入样例】163 6 11 45 23 70 67 34 26 89 90 15 56 50 20 103 513 15【输出样例】 3 6 56 50 20 70 67 34 26 89 90 15 11 45 23 102.1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和。

质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3。

需要特别说明的是1不是质数。

这就是哥德巴赫猜想。

欧拉在回信中说,他相信这个猜想是正确的,但他不能证明。

从此,这道数学难题引起了几乎所有数学家的注意。

哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的“明珠”。

现在请你编一个程序验证哥德巴赫猜想。

【输入描述】仅有一行,包含一个正奇数n,其中n大于9并且小于10000。

【输出描述】仅有一行,输出3个质数,这3个质数之和等于输入的奇数。

相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。

如果表示方法不唯一,请输出第一个数最小的方案,如果第一个数最小的方案不唯一,请输出第二个数最小的方案。

【输入样例】2009【输出样例】 3 3 20033.2008北京奥运会之前,很多人想成为四川汶川的一名火炬手,经过层层选拔,终于到了最后一关,这一关是一道很难的题:任意给定一个正整数N,求一个最小的正整数M,使得N×M的十进制表示形式里只有1和0。

【输入格式】只有一行,输入一个整数N。

(m,N≤100000)【输出格式】输出一行,如果有解,输出最小的M,否则输出”No Solution”【样例输入】12【样例输出】9254. 任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number。

2014noip复赛模拟练习5(答案)

2014noip复赛模拟练习5(答案)

小白的名次题目描述兔子小白是位数学爱好者,有一次它参加了兔界里的数学比赛,成绩公布后,小白很想知道自己的成绩到底排第几,现在请你帮它编一个程序,要求输入一个成绩,就能知道相应的名次。

注意:同分的按相同名次算,且只算一次。

输入输入共三行。

第一行:一个整数n(n<=30000)第二行:n个正整数(这些数不大于1000)。

第三行:一个整数,需要查询的分数。

输出输出共一行。

一个整数,查询成绩的名次。

样例输入730 50 80 60 20 50 6050样例输出3var a:array[0..1000] of integer;i,n ,x,y,s,max:integer;beginreadln(n);for i:=1 to 1000 do a[i]:=-1;max:=0;for i:=1 to n dobeginread(x);if x>max then max:=x;a[x]:=1;end;read(y);i:=max;while (a[i]<>y) and (i>y) dobegin dec(i); if a[i]=1 then inc(s); end;writeln(s+1);end.小s同学出去旅游啦~,小s同学住的宾馆每天早上都会提供丰盛的自助早餐,小s同学最爱吃的就是现烤的切片面包。

但是呢,宾馆的烤面包机很差,虽然说每次最多可以同时烤k块面包,但是只能烤好这些面包的一个面。

小s要想吃上好吃的面包,就需要把面包的两面都烤好。

小s同学一共想吃n块烤面包,但是小s每天都有好多景点需要游览,她不能在早餐上耽误很长时间,因此,小s同学希望你能告诉她最少需要使用几次烤面包机就可以烤好n块面包。

输入输入数据仅有一行包含两个用空格隔开的正整数n和k(n, k<=10),n表示小s同学一共要烤n块面包,k表示宾馆的烤面包机一次最多可以同时烤好k块面包的一个面。

输出仅有一行包含一个整数,表示小s同学至少要用多少次烤面包机。

2014noip复赛模拟练习14(答案)

2014noip复赛模拟练习14(答案)

查找“支撑数”【试题描述】在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?每行输出5项。

【输入描述】第一行为整数m,表示输入的整数个数。

(3<= m <=100 )第二行为m个整数。

【输出描述】若干个支撑数【输入样例】141 32 4 1 53 9 7 10 8 23 85 43【输出样例】3 4 5 9 1085program ex1135;var a:array[1..100] of longint;i,m,t:integer;beginread(m);for i:=1 to m do read(a[i]);t:=0;for i:=2 to m-1 doif (a[i]>a[i-1]) and (a[i]>a[i+1]) thenbeginwrite(a[i],' ');inc(t);if t mod 5=0 then writeln;end;end.Alunay最近迷上了数独这个游戏,他在完成一个数独后总要费一些时间来检查。

于是他把Whitegene作为苦力拽来帮他检查。

由于Whitegene是搞OI的,所以他就想写个程序来判断Alunay完成的数独是否正确。

不过最近他在感情上遇到了一些问题没有功夫去写,就想请你帮他完成这个任务。

数独规则:拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。

在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。

输入格式一个9*9个矩阵输出格式一个数字,1为构成数独,0为不构成数独程序如下:var i,j:longint;shudu:array [1..9,1..9] of longint;beginfor i:=1 to 9 dobeginfor j:=1 to 9 doread(shudu[i,j]);readln;end;case shudu[9,9] of4,5,9:writeln(1);else writeln(0);end;end.图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=32767),现在他有一本书,这本书的书号为K(<=32767),现在他要找出一本书号比这本书大的书和书号比这本小的书(但都要最接近图书馆馆长已有的书号),将找到的这两本书的书号加起来,并算出加起来以后的数是否为素数Input第一行二个数为N,K,表示几本书以及手中书的书号(<=32767)第二行开始有N个整数,表示这些书的书号Output第一行一个数,表示两本书书号加起来的和第二行一个字符,表示和是否为素数,若是则输出"Y"否则输出"F"(引号不打出)Sample Input6 56 4 5 3 1 20Sample Output10Fprogram ex1148;var n,k,i,x,s:integer;a:array[0..32767] of integer;f:boolean;beginreadln(n,k);fillchar(a,sizeof(a),0);for i:=1 to n dobeginread(x);a[x]:=1;end;s:=0;for i:=k+1 to 32767 doif a[i]<>0 then begin s:=s+i;break; end;for i:=k-1 downto 1 doif a[i]<>0 then begin s:=s+i;break; end;f:=true;for i:=2 to trunc(sqrt(s)) doif s mod i=0 then begin f:=false;break;end;writeln(s);if f=true then write('Y') else write('F');end.某工厂为制造大型设备购买了一批零件,为了解这批零件工作的稳定性,技术部门对它们进行了故障检测,并记录了每个零件的故障系数(1-1000的整数)。

2014noip复赛模拟练习30

2014noip复赛模拟练习30

1. 某工厂为制造大型设备购买了一批零件,为了解这批零件工作的稳定性,技术部门对它们进行了故障检测,并记录了每个零件的故障系数(1-1000的整数)。

现在要找出哪种故障系数下零件数最多,如果有多个解,仅输出故障系数最小的那个。

【输入格式】第1行n,表示零件的数量,1≤n≤10^6 (1000000)第2行开始这n个零件的故障系数,每个数据以空格间隔。

【输出格式】只有1行,包括两个整数,第1个整数是包含最多零件数的故障系数,第2个整数是该故障系数零件的数量。

若有多个,仅输出其中故障系数最小的。

【输入样例】51 3 4 3 4【输出样例】3 2(说明:故障系数是3、4的零件数都是2,则输出故障系数较小的那个)【数据规模】50% n≤1000 100% n≤10000002. 图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=32767),现在他有一本书,这本书的书号为K(<=32767),现在他要找出一本书号比这本书大的书和书号比这本小的书(但都要最接近图书馆馆长已有的书号),将找到的这两本书的书号加起来,并算出加起来以后的数是否为素数Input第一行二个数为N,K,表示几本书以及手中书的书号(<=32767)第二行开始有N个整数,表示这些书的书号Output第一行一个数,表示两本书书号加起来的和第二行一个字符,表示和是否为素数,若是则输出"Y"否则输出"F"(引号不打出)Sample Input6 56 4 5 3 1 20Sample Output10F3.文件加密(encrypt)对信息进行加密,可提高信息传输的安全性。

正是由于它的重要用途,人们发明了各种各样的加密方式。

其中一种方式是,对文中单词进行逆序处理。

请你写一个程序,对已加密的文本进行解密。

输入文件(encrypt.in)第1行,一个整数n,表示后面将有n行已加密的信息。

2014noip复赛模拟练习4

2014noip复赛模拟练习4

1.输入若干个字符串(以“?”号结束),找出并输出未在此串中出现的所有字母和数字(按ascii码顺序列出,区分大小写)。

输入:一行,一串字符,小于1000 000个。

输出:一行,未在字符串中出现的所有的字母和数字,按ascii码顺序、2.新兵入队的日子是YY年MM月DD日,他们觉得这个日子特别有意义,所以决定过n天搞一次活动来纪念这个日子,可是他们不知道n天后是什么日子,所以请你帮忙计算一下日期(入队日算第0天)。

输入数据:文件第一行读入n (0<=n<=50000)从文件的第二行分别读入YY,MM,DD其中1949<=YY<=1992,日期绝对合法。

输出数据:输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为“Y-M-D”。

样例输入100001979 4 16样例输出:2006-9-13. 小明爷爷家有棵苹果树,树上高低不一的长了N个苹果。

一天,M个小朋友到爷爷家做客,爷爷说:你们每人最多可以摘两个苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。

由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?请你计算机小朋友们最多能摘到多少个苹果?输入:N M(N<=100,M<=20)N个整数(以空格相隔),分别表示每个苹果的高度M个整数(以空格相隔),分别表示每个小朋友伸手能达到的高度。

输出:一个整数例如:输入:10 4110 100 150 90 100 135 160 88 130 140120 100 110 80 输出:54.笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。

但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

NOIP2014提高组复赛试题day1day2

NOIP2014提高组复赛试题day1day2

CCF全国信息学奥林匹克联赛(NOIP2014)复赛提高组 day11.生活大爆炸版石头剪刀布(rps.cpp/c/pas)【问题描述】石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。

如果两个人出拳一样,则不分胜负。

在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

表一石头剪刀布升级版胜负关系乙剪刀石头布蜥蜴人斯波克甲对乙的甲结果剪刀平输赢赢输石头平输赢输布平输赢蜥蜴人平赢斯波克平现在,小A和小B尝试玩这种升级版的猜拳游戏。

已知他们的出拳都是有周期性规律的,但周期长度不一定相等。

例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”已知小A和小B一共进行N次猜拳。

每一次赢的人得1分,输的得0分;平局两人都得0分。

现请你统计N次猜拳结束之后两人的得分。

【输入】输入文件名为rps.in。

第一行包含三个整数:N,NA,NB,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。

数与数之间以一个空格分隔。

第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。

其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”, 4表示“斯波克”。

数与数之间以一个空格分隔。

【输出】输出文件名为rps.out。

输出一行,包含两个整数,以一个空格分隔,分别表示小A、小B的得分。

【输入输出样例1】rps.in rps.out10 5 66 20 1 2 3 40 3 4 2 1 0【输入输出样例2】rps.in rps.out4 49 5 50 1 2 3 41 0 32 4【数据说明】对于100%的数据,0 < N ≤ 200,0 < NA ≤ 200, 0 < NB ≤ 200。

2014noip复赛模拟练习3

2014noip复赛模拟练习3

1.陶陶很喜欢数学,尤其喜欢奇怪的数。

一天,他突然发现,有的整数拥有的因子数是很有个性的,决定找到一个具有n个正因子数的最小的正整数。

例如:n=4,则m=6,因为6有4个不同正整数因子1,2,3,6;而且是最小的有4个因子的整数。

【输入文件】仅一个数n(1≤n≤60)【输出文件】仅一个数m【样例输入】4【样例输出】62.由文件给出n个1~30000的无序数正整数,其中1≤N≤10000,同一个正整数可能会出现多次,出现次数最多的整数称为众数,找出其中的众数及它出现的次数。

输入格式:输入文件masses.in 第一行是正整数的个数N,第二行开始为N个正整数。

输出格式:输出文件masses.out有若干行,每行两个数,第1个是众数,第2个是众数出现的次数。

样例输入:3018 2 10 1 1 15 6 13 3 3 11 18 2 12 15 13 18 17 15 19 8 3 15 17 11 16 14 8 7 16样例输出:15 43.在n个一连串的方格内填写字母A或B,但相邻两格内不能都填B。

求所有可能的填写方案数。

例如,当n=3,可能的方案有AAA、AAB、ABA、BAA、BAB等5种。

输入N输出方案数。

样例输入15 输出15974. 我们把t1,t2(包括t1, t2(1<=t1<t2<=10000000))之间的所有数的约数个数和n称为t1,t2的shlqsh数;问题是给出数据t1,t2后,求t1,t2的shlqsh数;【输入文件】输入文件shlqsh.in 仅包含一行,共有两个整数,表示t1 t2 (用空格分开)【输出文件】输出文件shlqsh.out 仅有一个整数,表示t1 , t2之间的shlqsh数。

【输入样例】 2 6 【输出样例】13样例说明:(说明部分不必输出)2的约数有1,2 (2个);3的约数有1,3 (2个);4的约数有1,2,4 (3个);5的约数有1,5 (2个);6的约数有1,2,3,6 (4个)。

2014noip复赛模拟练习5(答案)

2014noip复赛模拟练习5(答案)

小白的名次题目描述兔子小白是位数学爱好者,有一次它参加了兔界里的数学比赛,成绩公布后,小白很想知道自己的成绩到底排第几,现在请你帮它编一个程序,要求输入一个成绩,就能知道相应的名次。

注意:同分的按相同名次算,且只算一次。

输入输入共三行。

第一行:一个整数n(n<=30000)第二行:n个正整数(这些数不大于1000)。

第三行:一个整数,需要查询的分数。

输出输出共一行。

一个整数,查询成绩的名次。

样例输入730 50 80 60 20 50 6050样例输出3var a:array[0..1000] of integer;i,n ,x,y,s,max:integer;beginreadln(n);for i:=1 to 1000 do a[i]:=-1;max:=0;for i:=1 to n dobeginread(x);if x>max then max:=x;a[x]:=1;end;read(y);i:=max;while (a[i]<>y) and (i>y) dobegin dec(i); if a[i]=1 then inc(s); end;writeln(s+1);end.小s同学出去旅游啦~,小s同学住的宾馆每天早上都会提供丰盛的自助早餐,小s同学最爱吃的就是现烤的切片面包。

但是呢,宾馆的烤面包机很差,虽然说每次最多可以同时烤k块面包,但是只能烤好这些面包的一个面。

小s要想吃上好吃的面包,就需要把面包的两面都烤好。

小s同学一共想吃n块烤面包,但是小s每天都有好多景点需要游览,她不能在早餐上耽误很长时间,因此,小s同学希望你能告诉她最少需要使用几次烤面包机就可以烤好n块面包。

输入输入数据仅有一行包含两个用空格隔开的正整数n和k(n, k<=10),n表示小s同学一共要烤n块面包,k表示宾馆的烤面包机一次最多可以同时烤好k块面包的一个面。

输出仅有一行包含一个整数,表示小s同学至少要用多少次烤面包机。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CCF全国信息学奥林匹克联赛(NOIP2014)复赛提高组 day11.生活大爆炸版石头剪刀布(rps.cpp/c/pas)【问题描述】石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。

如果两个人出拳一样,则不分胜负。

在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

表一石头剪刀布升级版胜负关系现在,小A和小B尝试玩这种升级版的猜拳游戏。

已知他们的出拳都是有周期性规律的,但周期长度不一定相等。

例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”已知小A和小B一共进行N次猜拳。

每一次赢的人得1分,输的得0分;平局两人都得0分。

现请你统计N次猜拳结束之后两人的得分。

【输入】输入文件名为rps.in。

第一行包含三个整数:N,NA,NB,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。

数与数之间以一个空格分隔。

第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。

其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”, 4表示“斯波克”。

数与数之间以一个空格分隔。

【输出】输出文件名为rps.out 。

输出一行, 包含两个整数,以一个空格分隔,分别表示小A 、小B 的得分。

【输入输出样例1】【输入输出样例2】【数据说明】对于100%的数据,0 < N ≤ 200,0 < NA ≤ 200, 0 < NB ≤ 200。

2.联合权值 (link.cpp/c/pas)【问题描述】无向连通图G 有n 个点,n-1条边。

点从1到n 依次编号,编号为i 的点的权值为Wi ,每条边的长度均为1。

图上两点(u, v)的距离定义为u 点到v 点的最短距离。

对于图G 上的点对(u, v),若它们的距离为2,则它们之间会产生Wu ×Wv 的联合权值。

请问图G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?【输入】输入文件名为link.in 。

第一行包含1个整数n 。

接下来n-1行,每行包含2个用空格隔开的正整数u 、v ,表示编号为u 和编号为v 的点之间有边相连。

最后1行,包含n 个正整数,每两个正整数之间用一个空格隔开,其中第i 个整数表示图G 上编号为i 的点的权值为Wi 。

【输出】输出文件名为link.out 。

输出共1行,包含2个整数,之间用一个空格隔开,依次为图G 上联合权值的最大值和所有联合权值之和。

由于所有联合权值之和可能很大,输出它时要对10007取余。

【输入输出样例】20 7451 22 33 44 51 523 10【样例说明】本例输入的图如上所示,距离为2的有序点对有(1,3)、(2,4)、(3,1)、(3,5)、(4,2)、(5,3)。

其联合权值分别为2、15、2、20、15、20。

其中最大的是20,总和为74。

【数据说明】对于30%的数据,1<≤100;对于60%的数据,1<≤2000;对于100%的数据,1<≤200,000,0<Wi ≤10,000。

3. 飞扬的小鸟(bird.cpp/c/pas)【问题描述】Flappy Bird 是一款风靡一时的休闲手机游戏。

玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。

如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。

为了简化问题,我们对游戏规则进行了简化和改编:1.游戏界面是一个长为n,高为m的二维平面,其中有k个管道(忽略管道的宽度)。

2.小鸟始终在游戏界面移动。

小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成。

3.小鸟每个单位时间沿横坐标方向右移的距离为1,竖直移动的距离由玩家控制。

如果点击屏幕,小鸟就会上升一定高度X,每个单位时间可以点击多次,效果叠加;如果不点击屏幕,小鸟就会下降一定高度Y。

小鸟位于横坐标方向不同位置时,上升的高度X和下降的高度Y可能互不相同。

4.小鸟高度等于0或者小鸟碰到管道时,游戏失败。

小鸟高度为m时,无法再上升。

现在,请你判断是否可以完成游戏。

如果可以,输出最少点击屏幕数;否则,输出小鸟最多可以通过多少个管道缝隙。

【输入】输入文件名为 bird.in。

第1行有3个整数n,m,k,分别表示游戏界面的长度,高度和水管的数量,每两个整数之间用一个空格隔开;接下来的n行,每行2个用一个空格隔开的整数X和Y,依次表示在横坐标位置0~n-1上玩家点击屏幕后,小鸟在下一位置上升的高度X,以及在这个位置上玩家不点击屏幕时,小鸟在下一位置下降的高度Y。

接下来k行,每行3个整数P,L,H,每两个整数之间用一个空格隔开。

每行表示一个管道,其中P 表示管道的横坐标,L表示此管道缝隙的下边沿高度为L,H表示管道缝隙上边沿的高度(输入数据保证P 各不相同,但不保证按照大小顺序给出)。

【输出】输出文件名为bird.out。

共两行。

第一行,包含一个整数,如果可以成功完成游戏,则输出1,否则输出0。

第二行,包含一个整数,如果第一行为1,则输出成功完成游戏需要最少点击屏幕数,否则,输出小鸟最多可以通过多少个管道缝隙。

【输入输出样例1】bird.in bird.out【输入输出样例2】【输入输出样例说明】如下图所示,蓝色直线表示小鸟的飞行轨迹,红色直线表示管道。

【数据围】对于30%的数据:5≤n≤10,5≤m≤10,k=0,保证存在一组最优解使得同一单位时间最多点击屏幕3次;对于50%的数据:5≤n≤20,5≤m≤10,保证存在一组最优解使得同一单位时间最多点击屏幕3次;对于70%的数据:5≤n≤1000,5≤m≤100;对于100%的数据:5≤n≤10000,5≤m≤1000,0≤k<n,0<X<m,0<Y<m,0<P<n,0≤L<H ≤m,L+1<H。

CCF全国信息学奥林匹克联赛(NOIP2014)复赛提高组 day21.无线网络发射器选址(wireless.cpp/c/pas)【问题描述】随着智能手机的日益普及,人们对无线网的需求日益增大。

某城市决定对城市的公共场所覆盖无线网。

假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平行街道之间的距离都是恒定值1。

东西向街道从北到南依次编号为0,1,2…128,南北向街道从西到东依次编号为0,1,2…128。

东西向街道和南北向街道相交形成路口,规定编号为x的南北向街道和编号为y的东西向街道形成的路口的坐标是(x, y)。

在某些路口存在一定数量的公共场所。

由于政府财政问题,只能安装一个大型无线网络发射器。

该无线网络发射器的传播围是一个以该点为中心,边长为2*d的正方形。

传播围包括正方形边界。

例如下图是一个d = 1的无线网络发射器的覆盖围示意图。

现在政府有关部门准备安装一个传播参数为d的无线网络发射器,希望你帮助他们在城市找出合适的安装地点,使得覆盖的公共场所最多。

【输入】输入文件名为wireless.in。

第一行包含一个整数d,表示无线网络发射器的传播距离。

第二行包含一个整数n,表示有公共场所的路口数目。

接下来n行,每行给出三个整数x, y, k, 中间用一个空格隔开,分别代表路口的坐标(x, y)以及该路口公共场所的数量。

同一坐标只会给出一次。

【输出】输出文件名为wireless.out。

输出一行,包含两个整数,用一个空格隔开,分别表示能覆盖最多公共场所的安装地点方案数,以及能覆盖的最多公共场所的数量。

【输入输出样例】【数据说明】对于100%的数据,1 ≤ d ≤ 20,1 ≤ n ≤ 20, 0 ≤ x ≤ 128, 0 ≤ y ≤ 128, 0 < k ≤1,000,000。

2.寻找道路(road.cpp/c/pas)【问题描述】在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:1.路径上的所有点的出边所指向的点都直接或间接与终点连通。

2.在满足条件1的情况下使路径最短。

注意:图G中可能存在重边和自环,题目保证终点没有出边。

请你输出符合条件的路径的长度。

【输入】输入文件名为road.in。

第一行有两个用一个空格隔开的整数n和m,表示图有n个点和m条边。

接下来的m行每行2个整数x、y,之间用一个空格隔开,表示有一条边从点x指向点y。

最后一行有两个用一个空格隔开的整数s、t,表示起点为s,终点为t。

【输出】输出文件名为road.out。

输出只有一行,包含一个整数,表示满足题目描述的最短路径的长度。

如果这样的路径不存在,输出-1。

【输入输出样例1】road.in road.out3 21 22 11 3-1【输入输出样例说明】如上图所示,箭头表示有向道路,圆点表示城市。

起点1与终点3不连通,所以满足题目描述的路径不存在,故输出-1。

【输入输出样例2】road.in road.out6 61 21 32 62 54 53 41 53【输入输出样例说明】如上图所示,满足条件的路径为1->3->4->5。

注意点2不能在答案路径中,因为点2连了一条边到点6,而点6不与终点5连通。

【数据说明】对于30%的数据,0< n ≤10,0< m ≤20;对于60%的数据,0< n ≤100,0< m ≤2000;对于100%的数据,0< n ≤10,000,0< m ≤200,000,0< x,y,s,t≤n,x≠t。

3.解方程(equation.cpp/c/pas)【问题描述】已知多项式方程:求这个方程在[1, m]的整数解(n和m均为正整数)。

【输入】输入文件名为equation.in。

输入共n+2行。

第一行包含2个整数n、m,每两个整数之间用一个空格隔开。

接下来的n+1行每行包含一个整数,依次为a0,a1,a2,……,an。

【输出】输出文件名为equation.out。

第一行输出方程在[1, m]的整数解的个数。

接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m]的一个整数解。

相关文档
最新文档