2014noip复赛模拟练习16

合集下载

NOIP2014普级组复赛试题

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、文件名(程序名和输入输出文件名)必须使用英文小写。

NOIP2014提高组复赛试题day1day2

NOIP2014提高组复赛试题day1day2

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

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

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

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

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

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

现在,小A和小B尝试玩这种升级版的猜拳游戏。

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

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

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

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

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

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

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

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

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

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

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

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

【数据说明】对于100%勺数据,0<N<200,0<NA&200,0<NB&200。

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

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人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。

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

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

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

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

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

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

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

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

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

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

【输入样例】样例1:5 236 8 1 3 9样例2:6 161 2 3 1 3 5【输出样例】样例1:3样例2:Impossible【试题来源】武进区夏令营程序设计小能手PKprogram ex1797;var n,i,j,t,sum:integer;b,s:real;a:array[1..100] of integer;beginreadln(n,b);for i:=1 to n do read(a[i]);for i:=1 to n-1 dofor j:=i+1 to n doif a[i]<a[j] then begint:=a[i];a[i]:=a[j];a[j]:=t;end;s:=0; i:=0;sum:=0;repeatinc(i);s:=s+a[i];inc(sum);until (s>=b) or (i>=n);if s<b then write('Impossible') else write(sum);end.彩票摇奖(LOTTERY.PAS)【问题描述】为了丰富人民群众的生活、支持某些社会公益事业,北塔市设置了一项彩票。

NOIP2014 题解

NOIP2014 题解

NOIP2014 题解D1T1 : 生活大爆炸版石头剪刀布(rps)100% : 模拟。

另一种方法,可以先求出na,nb 的最小公倍数l ,在[1,l]的区间里模拟,对于剩下的部分,显然是循环了若干次[1,l]内的胜负情况,并剩余了一小部分,于是只要把两人的分数各自乘n div l,再对剩下的部分模拟即可。

复杂度 : O(na*nb)D1T2 : 联合权值(linp)30% : 穷举三个点,判断是否相邻,再统计权值并更新答案。

复杂度 : O(n^3)60% : 穷举一个点,并以该点为起点搜索,查找距离为2的结点,统计后更新答案。

复杂度 : O(n^2)100% : 记][i fa 为结点i 的父亲, ][i pow 是i 的权值。

题目给出了n 个点,n-1条边,那么这是一棵树。

那么考虑树形dp 。

很显然,距离为2的点在一棵树中有且仅有两种不同的位置,第一种是结点i 与结点]][[i fa fa ,第二种则是结点i 与结点j ,其中][][j fa i fa =。

记∑=][][j pow i sum,]}[{]max[j pow Max i =,其中][j fa i =。

那么有∑∑-+=])[]][[(*][]][[*][*2_j pow j fa sum j pow i fa pow i sum sum ans ,]}[*][]],[[*]{max[max _i y i x i fa pow i Max ans =,其中][],[i y i x 是i 的子节点中权值最大的两个。

复杂度 : O(n)D1T3 : 飞扬的小鸟(bird)30% : 搜索。

70% : 考虑动态规划,记],[j i f 为达到坐标),(j i 至少要点击几次屏幕。

则有]])1[,1[,]]1[*,1[(],[-+-+---=i y j i f k i x k j i f Min j i f ,注意考虑边界情况。

复杂度 : O(nm^2)100% : 上述动态规划超时的原因在于转移复杂度太高,如果能将转移复杂度降为O(1),那么就可以轻松将此题AC ,仔细想想发现对于所有可以用于更新],[j i f 的状态的高度都与j 同余(mod x[i-1]),那么在实际实现上述动态规划时,我们可以先穷举同余系,并以高度从低到高进行动态规划,在同一同余系中,记一个变量temp 为已经访问的状态中可以用于更新的最小值,每穷举到一个新的状态,把temp 更新为]),1[,1(j i f temp Min -+,并且只用temp+1更新其他状态。

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的数列,求至少要交换多少次,才能得到一个升序的序列。

noip2014普及组复赛题解

noip2014普及组复赛题解

1.珠心算测验注意看清题意:其中有多少个数,恰好等于集合中另外两个(不同的)数之和。

这样的题意加上100的规模,建议暴力3个for:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int n;int a[105];int main(){freopen("count.in","r",stdin);freopen("count.out","w",stdout);scanf("%d",&n);for(int i=1; i<=n; i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);int res=0;for(int i=1; i<=n; i++){int ok=0;for(int j=1; j<=n && !ok; j++) if(j!=i){for(int k=1; k<=n && !ok; k++) if(a[k]!=a[j]){if(a[j]+a[k]==a[i]) ok=1;}}res+=ok;}printf("%d\n",res);return 0;}2.比例简化L很小,还是枚举,然后比较的话建议用乘法比较,避免精度问题:#include<cstdio>#include<cstring>#include<iostream>using namespace std;int A,B,L;int gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);}int main(){freopen("ratio.in","r",stdin);freopen("ratio.out","w",stdout);scanf("%d%d%d",&A,&B,&L);int ba=1000000,bb=1;for(int i=1; i<=L; i++){for(int j=1; j<=L; j++){if(gcd(i,j)==1 && i*B>=j*A){if(ba*j>=bb*i){ba=i, bb=j;}}}}printf("%d %d\n",ba,bb);return 0;}3.螺旋矩阵没一圈的数量有规律的,最外面一圈(n-1)*4,然后每往里n-2,直到后要么只有一个点,要么4个点。

noip2014普及组初赛试题+答案

noip2014普及组初赛试题+答案

NOIP2014第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2014年10月11日14:30~16:30选手注意:1、试题纸共有5 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)⒈以下哪个是面向对象的高级语言( )。

A.汇编语言B.C++C.FortranD.Basic⒉1TB代表的字节数是( )。

A.2的10次方B.2的20次方C.2的30次方D.2的40次方⒊二进制数00100100和00010101的和是( )。

A.00101000B.001010100C.01000101D.00111001⒋以下哪一种设备属于输出设备( )。

A.扫描仪B.键盘C.鼠标D.打印机⒌下列对操作系统功能的描述最为完整的是( )。

A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序⒍CPU、存储器、I/O设备是通过( )连接起来的。

A.接口B.总线C.控制线D.系统文件⒎断电后会丢失数据的存储器是( )。

A.RAMB.ROMC.硬盘D.光盘⒏以下哪一种是属于电子邮件收发的协议( )。

A.SMTPB.UDPC.P2PD.FTP⒐下列选项中不属于图像格式的是( )。

A.JPEG格式B.TXT格式C.GIF格式D.PNG格式⒑链表不具有的特点是( )。

A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比⒒下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。

A.296B.133C.256D.199⒓下列几个32位IP地址中,书写错误的是( )。

A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1⒔要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。

2014noip普及组复赛测试(答案)

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)从最靠近路边(即第一行)的某棵花生植株跳回路边。

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。

NOIP2014普及组复赛试题 螺旋矩阵

NOIP2014普及组复赛试题 螺旋矩阵

NOIP2014普及组复赛试题解答3. 螺旋矩阵【问题描述】一个n 行n列的螺旋矩阵可由如下方法生成:从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。

根据经过顺序,在格子中依次填入1,2,3,…,n2,便构成了一个螺旋矩阵。

现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。

【分析】这是个蛇形填数问题。

如果采用先枚举二维数组再找对应的元素方法,由于1 ≤n ≤30,000,需要建立一个 30,000× 30,000的二维数组,结果会发生数据溢出且超出运行内存上限(128M)。

我们可以采用类似贪吃蛇的方法,让它在N×N个方格内自外向内逐格移动,控制其向右转的方向,并计算其长度。

解法一#include<cstdio>using namespace std;bool pd(int,int) ;int i,j;bool p;int main(){int n,x,y,u,d,l,r,tot=0; // U为上边界,D为下边界,L为左边界,R为右边界;freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);scanf("%d%d%d",&n,&i,&j);d=n;r=n;u=1;l=1; //各边界赋初值;x=1;y=0;p=true;while((tot<n*n)&&p){while((y<r)&&p){++y;++tot;pd(x,y);}--r;//在上侧边界上向右移动,当上侧一行的结束时,控制其右边界向左缩一列;while((x<d)&&p){++x;++tot;pd(x,y);}--d;//在右侧边界上向下移动,当右侧一列的结束时,控制其下边界向上缩一行;while((y>l)&&p){--y;++tot;pd(x,y);}++l;//在下侧边界上向左移动,当下侧一行的结束时,控制其左边界向右缩一列;while((x>u+1)&&p){--x;++tot;pd(x,y);}++u;//在左侧边界上向上移动,当左侧一列的结束时,控制其上边界向下缩一行;}printf("%d\n",tot);fclose(stdin);fclose(stdout);return 0;}bool pd(int x,int y) //判断是否到达目的地,如果到达则停止枚举;{if((x==i)&&(y==j))p=false;return p;}解法二:在上一个解法中,如果遇到极端情况时,可能需要枚举达900000000次,这显然太慢了些,我们可以根据贪吃移动的特点对程序进行优化。

NOIP2014提高组复赛试题

NOIP2014提高组复赛试题

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

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

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

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

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

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

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

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

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

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

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

【输入】输入文件名为。

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

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

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

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

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

【输出】输出文件名为。

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

【输入输出样例1】6 210 5 60 1 2 3 40 3 4 2 1 0【输入输出样例2】4 49 5 50 1 2 3 41 0 32 4【数据说明】对于100%的数据,0 < N ≤ 200,0 < ≤ 200, 0 < ≤ 200。

noip普及组复赛模拟试题16(附答案)

noip普及组复赛模拟试题16(附答案)

noip普及组复赛模拟试题16(附答案)【问题描述】任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number。

你的工作就是判断一个数N是不是Couple number。

【输入文件】仅一行,两个长整型范围内的整数n1和n2,之间用1个空格隔开。

【输入文件】输出在n1到n2范围内有多少个Couple number。

注意:包括n1和n2两个数,且n1<="" <="10" n1="" p=""> 【输入样例】1 10【输出样例】7Couple numbera*a-b*b=n <=> (a+b)(a-b)=n如果n是奇数,则a,b一奇一偶,而n=1*n,所以,令a=(n+1)/2,b=(n-1)/2,即n一定是Couple number。

如果n是偶数,则a,b同奇同偶,此时如果n mod 4=2,则n一定是拆成一奇一偶的和,即x+y和x-y的值一定是一奇一偶,这种情况下x,y肯定无整数解,所以此时的n一定不是Couple number;如果n mod 4=0,则a=n/4+1,b=n/4-1,即n一定是Couple number。

参考程序:var x,y,i,ans:longint;begin assign(input,'couple.in'); reset(input);readln(x,y); close(input);ans:=0;for i:=x to y dobeginif odd(i) then inc(ans)else if i mod 4=0 then inc(ans);end;assign(output,'couple.out');rewrite(output);writeln(ans);close(output);end.10 90(60)5000 12000(5251)100000 200000(75001)对于某个数n,,我们这次的工作仅是求出小于n且和n互质的数的个数,,比如n=10时 1,3,7,9均与10互质//互质的定义是gcd(a,b)=1输入格式 InputFormat输入只有一行,一个数N(1<=N<=2,000,000,000)。

NOIP14模拟

NOIP14模拟

NOIP2014day1 final模拟试题题目一览竞赛时间:3.5小时注意事项:1.输入文件名及输出文件名均为:主文件名.in及主文件名.out;2.选手需提交源文件(.c, .cpp, .pas,)及可执行文件(.exe),并存盘与以选手名命名的文件夹中,文件名必须使用小写;3.C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0;4.本次考试使用清橙测试软件,机器为机房标配;5.考试时间为3.5小时,请认真对待,争取高分。

1.铺地毯(carpet.cpp/c/pas)【问题描述】为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。

一共有n 张地毯,编号从1 到n。

现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。

注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

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

输入共n+2 行。

第一行,一个整数n,表示总共有n 张地毯。

接下来的n 行中,第i+1 行表示编号i 的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y 轴方向的长度。

第n+2 行包含两个正整数x 和y,表示所求的地面的点的坐标(x,y)。

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

输出共1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。

【输入输出样例1】carpet.in carpet.out3 31 02 30 2 3 32 13 32 2【输入输出样例说明】如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点(2,2)的最上面一张地毯是3 号地毯。

【输入输出样例2】carpet.in carpet.out3 -11 02 30 2 3 32 13 34 5【输入输出样例说明】如上图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,点(4,5)没有被地毯覆盖,所以输出-1。

noip2014模拟赛

noip2014模拟赛

NOIP2014模拟赛提高组By Aponoia注意:最终测试时,所有编译命令均不打开任何优化开关。

数竞神器【问题描述】作为数学竞赛的一员,Aponoia一直在研究一种能够造福所有数竞人的神器。

这种神器最终将能全自动地解决所有数学问题。

历经数年的潜心钻研之后Aponoia终于研发出了这种神器的一个试用版本。

和众多的软件类似,在正式发布这款神器之前,必须先要经过多轮的内测。

因此,Aponoia首先找到了数竞的老师来试验这一神器。

由于现在数竞正在学习数论,于是老师随口编了一个问题:“给定一个正整数n,以及一个质数p,求n、2n、3n、……、(n-1)*n、n*n关于模p的逆元”。

这时,Aponoia却尴尬的发现他开发的神器居然崩溃了。

无奈之下,Aponoia只能找到信息竞赛大神——你,来帮助他完善神器。

【输入格式】第一行两个正整数n,p,含义见题面。

【输出格式】一共n行,每行一个整数。

第i行的整数表示i*n关于模p的逆元。

【样例输入】5 7【样例输出】35162【数据规模和约定】对于30%的数据,2 ≤ n < p ≤ 3000。

对于60%的数据,2 ≤ n < p ≤ 100000。

对于100%的数据,2 ≤ n < p ≤ 3000000。

数据保证p为质数。

粉刷匠【问题描述】在你的帮助之下,Aponoia很快就完成了神器的开发。

这款神器在面市之后受到了各方好评,Aponoia也借此发了一笔大财。

在得到这笔钱后,Aponoia决定建造一栋别墅来犒劳一下自己。

可是在别墅建造过程中,Aponoia却对派来的粉刷匠很不满意。

在Aponoia看来,派来的粉刷匠简直连涂鸦的水平都不如。

于是,Aponoia决定亲自上阵,自己来刷墙。

然而,当Aponoia真正开始刷墙时,他才发现这真不是件轻松的活。

每当Aponoia将一段围墙刷成一种颜色后,他无法直接从整体上欣赏整面墙:比如当前墙上一共有几种颜色的油漆。

noip测试题及答案

noip测试题及答案

noip测试题及答案NOIP测试题及答案一、选择题1. 在计算机编程中,以下哪个选项是正确的循环结构?A. whileB. ifC. switchD. goto答案:A2. 下列哪个是面向对象编程的三大特性之一?A. 封装B. 继承C. 多态D. 所有以上选项答案:D二、填空题3. 在C++中,用于定义类的关键字是______。

答案:class4. 在Python中,用于实现列表推导式的语法是______。

答案:[表达式 for 变量 in 可迭代对象]三、简答题5. 简述什么是递归算法,并给出一个递归函数的示例。

答案:递归算法是一种在函数内部调用自身的算法。

它通常用于解决可以分解为相似子问题的问题。

示例如下:```cppint factorial(int n) {if (n == 0) return 1;else return n * factorial(n - 1);}```四、编程题6. 编写一个程序,实现计算一个整数列表中所有元素的和。

示例代码:```pythondef sum_of_elements(numbers):total = 0for num in numbers:total += numreturn total示例使用numbers = [1, 2, 3, 4, 5]print("Sum:", sum_of_elements(numbers))```7. 给定一个字符串,请编写一个函数,判断该字符串是否为回文。

示例代码:```pythondef is_palindrome(s):return s == s[::-1]示例使用test_string = "madam"print("Is palindrome:", is_palindrome(test_string))```五、论述题8. 论述在软件开发中使用版本控制系统的重要性,并说明常见的版本控制系统有哪些。

历届noip提高组复赛试题

历届noip提高组复赛试题

NOI’95 “同创杯”全国青少年信息学(计算机)奥林匹克竞赛分区联赛复赛试题(高中组)(上机编程,完成时间:210分钟)<1>编码问题:设有一个数组A:ARRAY[0..N-1] OF INTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。

例如:N=6时,有:A=(4,3,0,5,1,2)此时,数组A的编码定义如下:A[0]的编码为0;A[i]的编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)∴上面数组A的编码为:B=(0,0,0,3,1,2)程序要求解决以下问题:①给出数组A后,求出其编码。

②给出数组A的编码后,求出A中的原数据。

<2>灯的排列问题:设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……N k(k表示不同颜色灯的个数)。

放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。

例如:N=8(格子数)R=2(红灯数)B=3(蓝灯数)放置的方法有:R-B顺序B-R顺序放置的总数为12种。

数据输入的方式为:NP1(颜色,为一个字母)N1(灯的数量)P2 N2……Q(结束标记,Q本身不是灯的颜色)程序要求:求出一种顺序的排列方案及排列总数。

<3> 设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8如下图所示放置:其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。

计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:计算所用到的计算符为:+,-,⨯,且无优先级之分(自左向右计算),运算符最多为2个。

如:3+4⨯5=35 5⨯4+3=23可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:A=B⨯C+B也就是:8=2⨯3+2,15=3⨯4+3,……14=2⨯6+2程序要求:给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。

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

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

1. TOM有一个无穷序列中如下:110100100010000100000。

请你帮助TOM找出在这个无穷序列中指定位置上的数字输入格式Input Format第一行一个正整数N,表示询问的次数;接下来的N行一个正整数Ai,Ai表示在序列中的位置。

输出格式Output FormatN行,每一行为0或1,表示序列第Ai位上的数字。

对于100%的数据有N<=1500000,Ai<=10^9var n,i:longint;x,z,y:int64;begin readln(n);for i:=1 to n do beginreadln(x); z:=(x-1)*2; y:=trunc(sqrt(z));if z=y*(y+1) then writeln('1') else writeln('0');end;readln;readln;end.输入 39910111输出0 0 1输入 57 1024 15 10000 4 输出1 0 0 0 12. 输入一个正整数N(1 <= N <=20)后,可以得到一个N*N的数字螺旋方阵,分别求该方阵中的主对角线与副对角线上的数字之和S,P,输出S、P的差。

例如:N=5 得到的数字螺旋方阵如下:1 2 3 4 5 其中:主对角线从左上角到右下角,得到 16 17 18 19 6 的数字之和为:S=1+17+25+21+9=73 15 24 25 20 7 副对角线从右上角到左下角,得到 14 23 22 21 8 的数字之和:P=5+19+25+23+13=85 13 12 11 10 9 S-P= - 12Input 一个正整数NOutput主对角线与副对角线上的数字之和的差。

Sample Input 5Sample Output -12var n,i,j,t,f,l,q,z:integer;s1,s2:longint;a:array[1..20,1..20] of integer;beginreadln(n);t:=1; f:=1; l:=n;i:=1;q:=1;z:=n;while t<=n*n dobegincase f of1:beginfor j:=q to z do begin a[i,j]:=t;inc(t);end;f:=2; q:=i+1;dec(l); z:=l+q-1;end;2:beginfor i:=q to z do begin a[i,j]:=t;inc(t);end;f:=3;q:=j-1; z:=q-l+1;end;3:beginfor j:=q downto z do begin a[i,j]:=t;inc(t); end;f:=4;q:=i-1;dec(l);z:=q-l+1;end;4:beginfor i:=q downto z do begin a[i,j]:=t;inc(t); end;f:=1;q:=j+1;z:=q+l-1;end;end;end;s1:=0;s2:=0;for i:=1 to n do s1:=s1+a[i,i];for i:=n downto 1 do s2:=s2+a[n-i+1,i];writeln(s1-s2);end. 输入 7 输出 -24输入 20 输出 -200 输入 12 输出-7215 输出 -1123.字母A,B,C的所有可能的组合(按字典顺序排序)是:A, AB,ABC,AC,B,BC,C每个组合都对应一个字典顺序的序号,如下所示:1A2AB3ABC4AC5B6BC7C找出某个字母组合的字典序号。

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

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 0
2.题目描述:懒羊羊在前一阵准备羊村的小高考复习时表现出了罕见的勤奋,现在他得知了小高考四门必修课的成绩,他想知道根据羊村的高考政策,他在羊村高考中能加几分。

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

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

输入:仅有一行,4个不大于100的非负整数,相邻两数之间用空格隔开。

输出:仅有一行,若有D级存在,则输出“Poor LanYangYang”(引号不输出,注意大小写);否则输出懒羊羊在羊村高考中的加分。

样例输入:输入样例1:100 95 89 94 输入样例2:0 0 0 0
样例输出:输出样例1:3 输出样例2:Poor LanYangYang
3. NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法也许只能让航天员出仓维修,但是多次的维修会消耗航天员大量的能量,因此NASA便想设计一种食品方案,让体积和承重有限的条件下多装载一些高卡路里的食物. 航天飞机的体积有限,当然如果载过重的物品,燃料会浪费很多钱,每件食品都有各自的体积、质量以及所含卡路里,在告诉你体积和质量的最大值的情况下,请输出能达到的食品方案所含卡路里的最大值,当然每个食品只能使用一次.
【输入格式】第一行两个数体积最大值(<400)和质量最大值(<400)第二行一个数食品总数N(<50).第三行-第3+N行每行三个数体积(<400) 质量(<400) 所含卡
路里(<500)
【输出格式】一个数所能达到的最大卡路里(int范围内)
【样例输入】320 350↙4↙160 40 120↙80 110 240↙220 70 310↙40 400 220
【样例输出】550
4. 题目描述:一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。

接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。

每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃。

(不能丢弃有水的瓶子)显然在某些情况下CC无法达到目标,比如N=3,K=1。

此时CC会重新买一些新的瓶子(新瓶子容量无限,开始时有1升水),以到达目标。

现在CC想知道,最少需要买多少新瓶子才能达到目标呢?输入文件(Water.in):一行两个正整数,N,K(1<=N<=10^9,K<=1000)。

输出文件(Water.out):一个非负整数,表示最少需要买多少新瓶子。

输入样例1:3 1 输出样例1:1
输入样例2:13 2 输出样例2:3
输入样例3:1000000 5 输出样例3:15808
5. 给定一个十进制正整数n,它的递归变幻数定义如下:
1).如果n的位数多于1位(忽略前置的0),将n的各个位上的数相乘,乘积为m。

称m为n的子变幻数,n称为m的父变幻数。

求一个数的变幻数等于求其子变幻数。

即求n的变幻数等于求m的变幻数。

2).如果n的位数只有一位,n的变幻数即为它本身。

如求679的变幻数过程为:679 -> 378(=6*7*9) -> 168(=3*7*8) -> 48(=1*6*8) -> 32(=4*8) -> 6(=2*3),所以679的变幻数为6。

现在的问题是给定一个子变幻数k,问k的父变幻数最小是多少?
如:k=18,则k的父变幻数可以是29,也可以是92。

但最小为29。

数据输入:一个子变幻数k(位数小于1000)。

数据输出:k的最小父变幻数。

当不存在父变幻数时请输出“There is no such number!”,输出结果不含引号。

样例输入:48 样例输出:68
6. 对信息进行加密,可提高信息传输的安全性。

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

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

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

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

第2行至第n+1行,每行一个不超过1000个字符的字符串,每个字符串中只有空格和小写字母组成。

输出文件(encrypt.out):共n行,每行对应输出解密后的文本。

输入样例:encrypt.in
2
eno owt eerht
i ekil siht emag
输出样例:encrypt.out
one two three
i like this game
数据范围:n<= 50,000。

相关文档
最新文档