2014noip复赛模拟练习27
NOIP2014普级组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2014)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况中文题目名称珠心算测试比例简化螺旋矩阵子矩阵英文题目与子目录名count ratio matrix submatrix 可执行文件名count ratio matrix submatrix 输入文件名count.in ratio.in matrix.in submatrix.in 输出文件名count.out ratio.out matrix.out submatrix.out 每个测试点时限1秒1秒1秒1秒测试点数目10 10 10 20 每个测试点分值10 10 10 5 附加样例文件有有有有结果比较方式全文比较(过滤行末空格及文末回车)题目类型传统传统传统传统运行内存上限128M 128M 128M 128M二.提交源程序文件名对于C++语言count.cpp ratio.cpp matrix.cpp submatrix.cpp 对于C语言count.c ratio.c matrix.c submatrix.c 对于pascal语言count.pas ratio.pas matrix.pas submatrix.pas三.编译命令(不包含任何优化开关)对于C++语言g++ -o countcount.cpp -lm g++ -o ratioratio.cpp -lmg++ -o matrixmatrix.cpp -lmg++ -o submatrixsubmatrix.cpp -lm对于C语言gcc -o countcount.c -lm gcc -o ratio ratio.c-lmgcc -o matrixmatrix.c -lmgcc -o submatrixsubmatrix.c -lm对于pascal语言fpc count.pas fpc ratio.pas fpc matrix.pas fpc submatrix.pas注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
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人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。
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复赛模拟练习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普及组复赛测试(答案)

老师给笑笑布置了一份作业,笑笑不知如何解决。
老师给了一串很长的数列,要求从中找出连续的一段来使的总和最大。
【输入文件】:第一行包含一个整数n,表示数列的长度。
(n<=100000)第二行包含n个整数来描述这个数列,每个整数的的绝对值不超过1000。
【文件输出】:文件中只有一个整数,为最大的连续段总和。
【输入样例】:51 -23 1 -4【输出样例】4vars:array[1..10000] of longint;n,ii,t,ans:longint;beginreadln(n);for i:=1 to n doread(s[i]);t:=s[1];ans:=s[1];for i:=2 to n dobeginif t<0 then t:=s[i] else t:=t+s[i];if t>ans then ans:=t;end;writeln(ans);end.输入61 5 4 -2 63 输出17输入1024 -12 9 11 7 20 -8 15 3 18 输出87输入710 8 9 -5 12 6 11 输出51输入205 12 19 20 -7 -6 18 22 19 8 11 33 15 32 17 -30 4 14 24 -13输出230【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。
这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。
鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。
在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。
有经验的多多一眼就能看出,每棵花生植株下的花生有多少。
为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。
”我们假定多多在每个单位时间内,可以做下列四件事情中的一件:1)从路边跳到最靠近路边(即第一行)的某棵花生植株;2)从一棵植株跳到前后左右与之相邻的另一棵植株;3)采摘一棵植株下的花生;4)从最靠近路边(即第一行)的某棵花生植株跳回路边。
小学组2014

2014年山东省信息学奥林匹克联赛(NOIP2014)复赛小学组试题(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
1.读书(book.cpp/c/pas)【问题描述】你的家长最近给你买了一本新书,共n页。
你第一天看了a页,以后每天比前一天多看b页,那么最后一天看多少页?【输入】输入文件名为book.in。
输入共一行,包含三个正整数n、a、b,中间用空格隔开。
【输出】输出文件名为book.out。
输出共一行,包含一个正整数,表示最后一天看的页数。
【输入输出样例】【样例说明】第1天,25页;第2天,30页;第3天,35页;第4天,10页。
【数据范围】对于50%的数据,0<n<=30,000;对于100%的数据,0<n<=2,000,000,000。
2.蚂蚁爬竹竿(ant.cpp/c/pas)【问题描述】n只蚂蚁以每秒1厘米的速度在长为L厘米的水平放置的竹竿上爬行。
当蚂蚁爬到竹竿的任意一个端点时就会掉落。
对于每只蚂蚁,我们知道开始时它距离竹竿左端的距离为ai。
请计算所有蚂蚁都掉落下竹竿时所需的最短时间。
【输入】输入文件名为ant.in。
第一行,n,蚂蚁的数量。
第二行,L,竹竿的长度。
第三行,n只蚂蚁距离竹竿左端点的距离。
【输出】输出文件名为ant.out。
输出共一行,包含一个正整数,表示所有蚂蚁都掉下竹竿所需的最短时间。
【输入输出样例】【样例说明】3只蚂蚁都爬下竹竿最快的方法是:第1只蚂蚁往左爬下竹竿需要2秒;第2只蚂蚁往右爬下竹竿需要4秒;第3只蚂蚁往右爬下竹竿需要3秒。
所以3只蚂蚁全都爬下竹竿所需的最短时间是4秒。
【数据范围】对于50%的数据:1<=L<=10000;1<=n<=1000;0<=ai<=L;对于100%的数据:1<=L<=1000000000;1<=n<=1000000;0<=ai<=L。
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测试题历年试题

NOIP2013一、单项选择题(共15 题,每题1.5 分,共计22.5 分;每题有且仅有一个正确选项)1.一个32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282.二进制数11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4.1948 年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A. 冯·诺伊曼(John von Neumann)B. 图灵(Alan Turing)C. 欧拉(Leonhard Euler)D. 克劳德·香农(ClaudeShannon)5.已知一棵二叉树有2013 个节点,则其中至多有()个节点有2 个子节点。
A. 1006B. 1007C. 1023D. 10246.在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。
右图是一个有5 个顶点、8 条边的连通图。
若要使它不再是连通图,至少要删去其中的()条边。
A. 2B. 3C. 4D. 57.斐波那契数列的定义如下:F1 = 1, F2 = 1, Fn = Fn –1 + Fn –2 (n ≥3)。
如果用下面的函数计算斐波那契数列的第n 项,则其时间复杂度为()。
int F(int n){if (n <= 2)return 1;elsereturn F(n - 1) + F(n - 2);}A. O(1)B. O(n)C. O(n2)D. O(Fn)8.二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
那么,二叉查找树的()是一个有序序列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 被7整除描述:要求输出从1到n(1<=n<=10^6),有多少个整数n,满足2^n-n^2能被7整除
输入格式Input Format 一个数n
输出格式Output Format 一个数,即满足的个数
样例输入
2
样例输出
1
2. 在A、B两个城市之间设有N个路站(如下图中的S1,且N<100),城市与路站之间、路站和路站之间各有若干条路段(各路段数<=20,且每条路段上的距离均为一个整数)。
A,B的一条通路是指:从A出发,可经过任一路段到达S1,再从S1出发经过任一路段,…最后到达B。
通路上路段距离之和称为通路距离(最大距离
<=1000)。
当所有的路段距离给出之后,求出所有不同距离的通路个数(相同距离仅记一次)。
例如:下图所示是当N=1时的情况:
从A到B的通路条数为6,但因其中通路5+5=4+6,所以满足条件的不同距离的通路条数为5。
3. 一台打字机准备将1到10^n的数依次打出。
在打印过程中,这台打字机出现了一个故障:数字“3”打不出来。
因此,所有含有数字“3”的数都没有被正确地打出。
试问没有被正确打出的数一共有多少个。
输入数据
输入一个正整数n。
输出数据
输出从1到10^n这些数中不能被正确打印的数的个数。
输入样例
2
输出样例
19
数据规模
n<=1000
4. 问题描述: 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。
输入数据
输入一个正整数S。
输出数据
输出最大的约数之和。
样例输入
样例输出
9
样例说明
取数字4和6,可以得到最大值(1+2)+(1+2+3)=9。
数据规模
S<=1000
5. 流感会结束吗?问题描述:
八中一共有n个学生。
这n个学生里一共有m对朋友关系。
在流感发作期,每个健康学生都要看望当天他生病的朋友(如果有的话),并在第二天被传染上疾病(除非他在免疫期内);
每个生病的学生在第二天都会痊愈,并在这一天具有免疫性。
从第三天起,看望生病的朋友将再次使他染上流感。
初始时(第一天),只有一个学生患有流感。
试问多少天后流感会自动结束。
输入数据
第一行输入两个正整数n和m。
接下来m行每行两个正整数x,y,表示编号为x的学生和编号为y的学生是一对朋友。
输入数据保证每一对朋友关系只描述一次。
最后一行输入一个正整数,代表初始时患有流感的学生的编号。
输出数据
如果流感永远不会结束,请输出-1,否则输出多少天后流感会结束。
答案保证不超过2 000 000 000。
样例输入
4 4
1 2
2 3
3 4
2 4
1
样例输出
3
样例说明
第一天1号学生生病,2号学生访问他;
第二天2号学生生病,其它三个学生访问他,由于1号处于免疫期,未患流感;
第三天3、4号学生生病,2号学生访问他们。
第四天3、4号学生痊愈,流感结束。
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据范围
n,m<=100 000。