信息学奥林匹克竞赛复赛试题
CCF全国信息学奥林匹克联赛NOIP普及组复赛试题

CCF全国信息学奥林匹克联赛NOIP普及组复赛试题CCF全国信息学奥林匹克联赛(NOIP2018)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-****************,内存32GB。
上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1. 标题统计(title.cpp/c/pas)【问题描述】凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。
统计标题字符数时,空格和换行符不计算在内。
【输入格式】输入文件名为title.in。
输入文件只有一行,一个字符串s。
【输出格式】输出文件名为title.out。
输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。
见选手目录下的title/title1.in和title/title1.ans。
【输入输出样例1说明】标题中共有3个字符,这3个字符都是数字字符。
见选手目录下的title/title2.in和title/title2.ans。
【输入输出样例2说明】标题中共有5个字符,包括1个大写英文字母,1个小写英文字母和2个数字字符,还有1个空格。
由于空格不计入结果中,故标题的有效字符数为4个。
【数据规模与约定】规定|s|表示字符串s的长度(即字符串中的字符和空格数)。
对于40%的数据,1≤|s|≤5,保证输入为数字字符及行末换行符。
对于80%的数据,1≤|s|≤5,输入只可能包含大、小写英文字母、数字字符及行末换行符。
对于100%的数据,1≤|s|≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。
信息学奥林匹克联赛复赛模拟试题及题解

test01题解1、1、乒乓球比赛(table.cpp)问题描述:一次乒乓球比赛,赛制为单循环赛,每一对选手之间都要打一场五局三胜的比赛,赢得最多比赛局数的人为优胜者。
现在你有一份比赛记录表,记录了每一场比赛的比分,计算出优胜者。
输入格式:第一行包含n(2≤n≤100),比赛的选手数目。
接下来给出一个n*n矩阵A。
矩阵的每一个元素都是0、1、2、3中的一个。
第i行第j列的元素aij是第i个选手在和第j个选手的比赛中赢的局数。
aij和aji(i≠j)正好有一个是3,另外一个小于3。
矩阵的所有对角线元素都是0。
输出格式:int m ain(){int n,i,mmax,imax,j,t,y;fin>>n; mmax=0;imax=-1;for (i=0;i<n;i++){t=0; for (j=0;j<n;j++){ fin>>y; t+=y; }if (t>mmax) { mmax=t;im ax=i;}}fout<<im ax+1<<endl;}2、数字序列(number.cpp)问题描述:在下列的无穷数字序列1121231234123451234561234567123456781234567891234567 89101234567891011123456789101112......中,查找第i个数字。
输入格式:第一行为正整数t(1≤t≤10),表示测试数据组数。
接下来t行,每行一个正整数i(1≤i≤231-1)。
输出格式:i,输出对应位置上的数字,每个数字一行。
对于每一个int length,n,t; long long a,value,f[100001];fin>>t;while (t--){fin>>a;if (a==1) { fout<<1<<endl; continue; }f[1]=1;f[2]=3;n=2;while (f[n]<a){n++; length=0; value=n;while (value) { value/=10; length++;}f[n]=f[n-1]+f[n-1]-f[n-2]+length;}if (f[n]==a) fout<<n%10<<endl;else {long long e,t,r=0; value=a-f[n-1];for (e=1;r<value;e++) {t=e; while (t) { t/=10; r++;}}e--;if (r==value) fout<<e%10<<endl;else {for(long s=1;s<=r-value;s++) e/=10; fout<<e%10<<endl;}}}}3、斐波那契数字统计(fibs.cpp)问题描述:编程统计从a到b中一共有多少斐波那契数。
全国青少年信息学(计算机)奥林匹克分区联赛复赛模拟试题一汇总

复赛模拟试题一(3小时,满分400分)说明:1.严格按照题目所要求的格式进行输入、输出,否则严重影响得分。
2.题目测试数据有严格的时间限制5s,超时不得分。
3.输入文件格式不用判错;从输入文件读入数据,输入文件名在程序中从键盘读入,计算结果输出到屏幕。
4.程序完成后,要按指定的提交文件名编译成EXE文件,指定的文件名如下:问题A: 天使的起誓(TENSHI NO YUBIKILI)问题描述:TENSHI非常幸运的被选为掌管智慧之匙的天使。
在正式任职之前,她必须和其他新当选的天使一样,要宣誓。
宣誓仪式是每位天使各自表述自己的使命,她们的发言稿被放在N个呈圆形排列的宝盒中。
这些宝盒按顺时针方向被编上号码1、2、3……、N-1、N。
一开始天使们站在编号为N的宝盒旁。
她们各自手上都有一个数字,代表她们自己的发言稿所在的盒子是从1号盒子开始按顺时针方向的第几个。
例如:有7个盒子,那么如果TENSHI手上的数字为9,那么她的发言稿所在盒子就是第2个。
现在天使们开始按照自己手上的数字来找发言稿,先找到的就可以先发言。
TENSHI一下子就找到了,于是她最先上台宣誓:“我将带领大家开启NOI之门……”TENSHI宣誓结束以后,陆续有天使上台宣誓。
可以有一位天使找了好久都找不到她的发言稿,原来她手上的数字M非常大,她转了好久都找不到她想找的宝盒。
任务:请帮助这位天使找到她想找的宝盒的编号。
输入格式:输入文件有两行分别正整数N和M,其中N、M满足81000 2 ≤ N ≤ 10,2 ≤ M ≤ 10输出格式:文件只有一行即宝盒的编号样例一样例二问题B: 步步高升(Step by Step)问题描述:春节的时候TENSHI去逛花市。
她来到一个卖盆竹的摊位,看到一盆叫做“步步高升”的盆竹。
“步步高升,步步高升……”学习就是要一步一步来,不能急,要打好基础。
在稳固的基础上才谈得上步步高升!TENSHI若有所思。
她看到这盆东西好意头,于是想买下。
小学生信息学奥林匹克复赛模拟试题一

小学生信息学奥林匹克复赛模拟试题一说明:1.严格按题目要求的输入、输出格式读写数据,否则不得分。
2.请在D盘根目录下建立以自己考号命名的文件夹,并把需要提交的文件(即每一题的源文件和编译后的可执行文件)保存在此文件夹内。
3.竞赛结束后速离开考场,不要关机。
第一题:开灯游戏(xj1.pas)【问题描述】有n盏灯,放在一排,从1到n依次顺序编号。
有m个人也从1到m依次顺序编号。
第1个人(1号)将灯全部关闭;第2个人(2号)将凡是2的倍数的灯打开;第3个人(3号)将凡是3的倍数的灯作相反处理(该灯如是打开的,则将它关闭;如是关闭的,则将它打开)。
以后的人都和3号一样,将凡是自己编号倍数的灯作相反处理。
试计算当第m个人操作后,哪几盏灯是亮的?【输入格式】从键盘输入n,m的值。
(n,m均为小于32768的自然数,且n>=m)【输出格式】在同一行输出亮着的灯的编号。
(没有灯亮则输出“NO”)【样例输入】5 3【样例输出】2 3 4第二题:数列求和(xj2.pas)【问题描述】简单数列是有规律排列的一些数,例如1,2,3,4,5,6,7就是这样的数列,这种数列中的后一个数总是前一个数多或少一个相同的数,其实只要知道这种数列中的前三个数和最后一个数就可以写出数列中的所有的数。
你的任务是根据给出的数列求出这个数列所有数的和。
每个数列的前三个数和最后一个数从键盘输入。
【输入格式】输入只有一行,分别为数列的前三个数和最后一个数。
所有输入均为不大于32767的自然数。
【输出格式】以等式的形式输出这个数列的和。
【样例输入1】项数=(末项-首项) div 公差+11 2 3 7【样例输出2】1+2+3+…+7=28【样例输入2】-3 -1 1 5【样例输出2】(-3)+(-1)+1+…+5=5(说明:算式中只要求输出前三个数和最后一个数,中间的数用…代表,等式左边的负数要加上小括号)第三题:算式求解(xj3.pas)【问题描述】输入一个算式,输出算式的结果。
第七届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

第七届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题第七届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题(普及组二类试卷三小时完成)●●存盘文件名分别为C21.HTM.C22.C23.C24.C25,存到软盘上,存错无效.●●一.网页设计(20分)1.题目:珍贵的自然资源2.网页内容及技巧要求:(1)将〝珍贵的自然资源〞作为主页的主标题且滚动显示(从左到右或从右到左),字号为7号,红色:(2)以下面内容为标题创建超链接(内容可有可无,要求能从子页返回主页):美丽的祖国灰色的天空我的遐想(3)在主页适当位置以〝我爱大自然〞为题写50字左右的能充分表现出一个中学生热爱自然.热爱人类的美好情操以及为保护自然从我做起的热切愿望.版面样式要富于变化:在完成以上要求后可任意发挥,但要与主题相符.二.由键盘输入两个整数,编写程序求这两个数的最大公因子.(20分)三.已知N!=N_(N-1)_(N-2)…3_2_1,编写程序求1000!后有多少个0.(20分)四.任给出4个非0的不同数字,编写程序求出由这4个数字组成的所有4位数.例如:输入:3,2,1,6输出:1236 1263 1326 1362 1623 16322136 2163 2316 2361 2613 26313126 3162 3216 3261 3612 36216123 6132 6213 6231 6312 6321程序要求:从键盘输入4个不同的非0数字,列出由这4个数字组成的所有4位数,每行输出6个.(20分)五.编写程序实现装球(20分)设有N个盒子(N足够大,可装入任何数量的球),分别编号1,2,….同时有K个小球(K>0),今将K个小球装入到盒子中去,装入规则如下:1.第一个盒子不能为空.2.装入必须严格按递增的顺序进行.例如,当K=8,N=6装入方法有:1,2,5或1,3,43.在满足上面的两个条件下,要求有球的盒子尽可能多.4.装完之后,相邻盒子中球个数差的绝对值之和为最小(未装的盒子不计).因此在上例中,装入方法最终选1,3,4.。
第十一届全国青少年奥林匹克信息学联赛复赛普及组试题

第十一届全国青少年奥林匹克信息学联赛复赛普及组试题及答案陶陶摘苹果(apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。
苹果成熟的时候,陶陶就会跑去摘苹果。
陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。
假设她碰到苹果,苹果就会掉下来。
【输入文件】输入文件apple.in包括两行数据。
第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
【输出文件】输出文件apple.out包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
【样例输入】100 200 150 140 129 134 167 198 200 111110【样例输出】5[参考程序]题目讲解:简单的循环和文件操作的考察,和去年“不高兴的晶晶”有相似之处,但是比那一道题目简单。
program apple(input,output);varapp:array[1..10] of integer;f1,f2:text;i,j,n:integer;beginassign(f1,'apple.in');assign(f2,'apple.out');reset(f1);rewrite(f2);for i:=1 to 10 do read(f1,app);read(f1,n);j:=0;for i:=1 to 10 doif app<=n+30 then j:=j+1;writeln(f2,j);close(f1);close(f2);end.校门外的树(tree.pas/c/cpp)【问题描述】某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。
第四年全国青少年信息学(计算机)奥林匹克分区联赛高中复赛试题

第四年全国青少年信息学(计算机)奥林匹克分区联赛高中复赛试题〔高中组比赛用时: 3 小时〕1、火车从始发站〔称为第 1 站〕开出,在始发站上车的人数为a,而后抵达第 2 站,在第 2站有人上、下车,但上、下车的人数同样,所以在第2站开出时〔即在抵达第3 站以前〕车上的人数保持为 a 人。
从第 3 站起〔包含第 3 站〕上、下车的人数有必定规律:上车的人数基本上前两站上车人数之和,而下车人数等于上一站上车人数,向来到终点站的前一站〔第n-1 站〕,都知足此规律。
现给出的条件是:共有N 个车站,始发站上车的人数为 a,最后一站下车的人数是m〔所有下车〕。
试问 x 站开出时车上的人数是多少?输入: a, n, m和 x输出:从x 站开出时车上的人数。
{20%}2、设有 n 个正整数〔 n≤ 20〕,将它们联接成一排,构成一个最大的多位整数。
比如: n=3 时, 3 个整数 13, 312,343 联接成的最大整数为:34331213又如: n=4 时, 4 个整数 7, 13, 4,246 联接成的最大整数为:7424613程序输入: nn 个数程序输出:联接成的多位数{40%}3、有名科学家卢斯为了检查学生对进位制的理解,他给出了以下的一张加法表,表中的字母代表数字。
比如:{40%}其含义为:+ L K V E L+L=L, L+K=K, L+V=V, L+E=EK+L=K, K+K=V, K+V=E, K+E=KL L L K V EK K V E KL E+E=KVV V E KL KK依据这些规那么可推导出:L=0, K=1, V=2, E=3E E KL KK KV同时可以确立该表表示的是 4 进制加法程序输入:n〔 n≤9〕表示行数。
以下 n 行,每行包含n 个字符串,每个字串间用空格分开。
〔字串仅有一个为‘ +’号,其余都由大写字母构成〕程序输出:①各个字母表示什么数,格式如:L=0, K=1,②加法运的确是几进制的。
noip复赛普及组试题

CCF 全国信息学奥林匹克联赛〔NOIP2021 〕复赛普及组〔请选手务必仔细阅读本页内容〕一.题目大要中文题目名称金币扫雷游戏求和销售员英文题目与子目录名coin mine sum salesman 可执行文件名coin mine sum salesman 输入文件名输出文件名每个测试点时限 1 秒 1 秒 1 秒 1 秒测试点数量10101010每个测试点分值10101010附加样例文件有有有有结果比较方式全文比较〔过滤行末空格及文末回车〕题目种类传统传统传统传统运行内存上限128M128M128M128M 二.提交源程前言件名对于 C++语言对于C语言对于 pascal语言三.编译命令〔不包括任何优化开关〕对于 C++语言g++ -o coin -g++ -o mine -g++ -o sum -g++ -o salesmanlm lm lm-lm 对于C语言gcc -o coin gcc -o mine gcc -o sum gcc -o salesman-lm-lm-lm-lm对于 pascal语言fpc fpc fpc fpc 本卷须知:1、文件名〔程序名和输入输出文件名〕必定使用英文小写。
2、 C/C++中函数 main()的返回值种类必定是int,程序正常结束时的返回值必定是3、全国一致评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor4G,上述时限以此配置为准。
0 。
,,内存4、只供应 Linux格式附加样例文件。
5、特别提示:评测在当前最新宣告的NOI Linux下进行,各语言的编译器版本以其为准。
1.金币c/pas)国王将金作工,放忠的士。
第一天,士收到一枚金;此后两天〔第二天和第三天〕,每天收到两枚金;此后三天〔第四、五、六天〕,每天收到三枚金;此后四天〔第七、八、九、十天〕,每天收到四枚金⋯⋯;种工放模式会素来延下去:当 N 天每天收到 N 枚金后,士会在此后的 N+1 天里,每天收到 N+1 枚金。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2007衢州一中校庆 noip练习
(cat.pas/c/cpp)
【问题描述】
阿猫很喜欢生物学。
他还在今年的全国中学生生物学联赛中获得了一等奖。
一天,阿猫在实验室听说了这样一种繁殖能力很强的老鼠。
这种老鼠在出生后的第一个月,可以生出a 对老鼠;第二个月,可以生出b 对老鼠;第三个
月及以后的每个月,都可以生出c 对老鼠。
阿猫对此十分好奇。
他很想知道,如果他有一对刚出生的老鼠,按最理想的模式繁殖,且老
鼠不死,那么最少需要多少个月它们就可以覆盖整个地球。
为了完成这一猜想,阿猫需要知道这种老鼠在第N 个月时的数量。
【输入文件】
输入文件cat.in 只有一行,四个数,分别为a,b,c,N(0<=a<=b<=c<=100,N<=3000),
其含义为题目所述。
【输出文件】
输出文件cat.out 只有一个数,为第N 个月老鼠的数量。
【输入样例】
0 1 1 11
【输出样例】
144
倒金字塔
(purple.pas/c/cpp)
【问题描述】
Purple 国的一支科学考察队到达了举世闻名的古埃及金字塔。
关于金字塔的建造一直是一个未解之谜, 有着“西方史学之父”之称的希罗多德认为,金字塔的
建造是人力和牲畜,花费20 年时间从西奈半岛挖掘天然的石头运送到埃及堆砌而成。
也有不少人认为是外星人修建的。
人们发现胡夫金字塔的经线把地球分成东、西两个半球,它们的陆地面积是相等的,这种“巧合”大概是外星人选择金字塔建造地点的用意。
法国化学家戴维·杜维斯则认为,建造金字塔的巨石不是天然的,而是人工浇筑的。
Purple 国科考队的队员们正准备研究戴维·杜维斯提出的假说。
为了研究这种假说,他们需要用到“倒金字塔模型”。
所谓倒金字塔模型,即金字塔由N 层人工浇筑的巨石堆砌而成,非底层
的任意一层巨石的长度和宽度都必须要小于等于它下面的一层巨石的长度和宽度。
现在,科考队队员们打算用手里仅有N 块木板去模拟这个倒金字塔模型。
请计算出科考队队
员们能够构建的倒金字塔模型的最大高度。
【输入文件】
输入文件purple.in 的第1 行,为一个正整数N(N<=100000),表示科考队队员们手里一
共有N 块木板。
接下来N 行,每行两个数:a,b(a,b<=100000),分别表示一块木板的长度与宽度。
【输出文件】
输出文件purple.out 只有一个正整数,为最多可以堆叠的倒金字塔的高度。
所有的木板厚
度均为1。
【输入样例】
3
3 2
1 1
2 2
【输出样例】
3
打地鼠
yy.pas/c/cpp yy.in/out
SDyy喜欢游戏。
实际上,YY所喜欢的游戏都是很幼稚的。
他幼稚地找到你,让你帮他玩这个游戏。
YY的游戏名字叫打地鼠。
规则很简单。
有一个5*5的棋盘,棋盘外边是高速公路,用绿色表示。
如果两个格子拥有公共边,这2个格子就是相邻的。
左下角的棋盘格为(1,1),右上角为(5,5)
游戏开始,在第1秒钟初,YY随便找了一个格子跳了进去,每当秒针跳一下,YY可以在瞬间完成以下的一种任务:
(1)什么也不干
(2)从某个格子移动到相邻的格子
(3)从某个最外层的格子移动到高速公路上
(4)从高速公路上移动到某个最外层的格子。
但是,高速公路的管理部门告诉YY,他在任意连续3s内,至多能使用高速公路1s。
在某些秒钟,某些格子上会出现可爱的小动物,比如鼠之类的,如果在这一秒钟,YY 恰巧也在这个格子里,设坐标为(x,y)那么他就可以得到1分。
分数是累加的。
已知游戏在第M秒末结束,请帮助YY设计一个路线,使得YY可以获得最大的得分,当然为了你的方便,你只需要计算出这个最大得分就可以了。
【输入文件】yy.in
第一行N:鼹鼠出现的次数。
M:游戏的总时间
以下N行,每行包括4个整数,A B C D(1<=A,B<=5,1<=C<=D<=M),表示在第C 秒初到第D秒末,在(A,B)格子上会出现鼹鼠。
请注意C和D所构成的区间之间可能有交集。
【输出文件】yy.out
一个整数,即最高分数
【样例输入】
2 10
1 1 1 5
4 4 8 8
【样例输出】
6
【对样例的说明】
在第6s跑到公路上,第7s跑到(5,4),第8s跑到(4,4)
【数据范围】
对于30%的数据,M<=10
对于100%的数据,M<=3000,N<=1000。
每行上的CD的差的绝对值不超过10。
工作(Work.pas/exe)
【题目描述】
这次故事的主角是HG!转眼4年过去了,HG本科毕业了,于是找了份工作。
每天HG会收到一份任务清单,清单上列出了n个可能需要他完成的任务。
每个任务包含3个信息:Ti、Ai、Bi,Ti表示完成此任务需要的时间,Ai表示此任务的到达时间,Bi表示此任务的最晚完成时间。
在某一时刻若HG手上没有任务,那么他可以选择一个已经到达且还能够在Bi时刻之前(或者恰好在Bi时刻)完成的任务来做。
由于HG有点懒(纯属虚构:D),他想尽量少的减少他的总工作时间,但是他不能在可以做任务的时候故意不做(这样会被炒鱿鱼的>_<),那么他该如何挑选任务来做呢?
你的任务就是求出HG的最少工作时间(即总共有多少时间HG在做任务)。
【输入】
第一行一个整数n表示任务数。
以下n行,每行三个整数Ti,Ai,Bi。
(n<=1000,0<=Ai,Bi<=1500,Ti>=1)
【输出】
输出仅一个数,即最少工作时间。
【样例输入】
3
15 0 25
50 0 90
45 15 70
【样例输出】
50
【数据范围】
Ti>=1,0<=Ai,Bi<=1200;
30%的数据满足n<=5;
60%的数据满足n<=500;
100%的数据满足n<=1000。
【说明】
输入数据保证Bi-Ai要大于等于Ti,且小于2Ti。
又上锁妖塔
(tower.in/tower.out)
[题目描述]
小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑>,可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进去,于是小D问他:”你在干什么?怎么不上去?”小A说:”我在想怎么从锁妖塔外面爬上去”(倒…) 锁妖塔的建造很特别,塔总共有n层,但是高度却不相同,这造成了小A爬过每层的时间也不同.小A 会用仙术,每用一次可以让他向上跳一层或两层,但是每次跳跃后小A都将用完灵力,必须爬过至少一层才能再次跳跃(你可以认为小A需要跳两次一层才休息),小A想用最短的时间爬到塔顶,可是他不能找到时间最短的方案,所以请你帮他找到一个时间最短的方案让他爬到塔顶,小A只关心时间,所以你只要告诉他最短时间是多少就可以了.你可以最后跳到塔外即超过塔高.
[输入格式]
第一行一个数n (n<=10000),表示塔的层数.
接下来的n行每行一个数(<=100),表示从下往上每层的高度. [输出格式]
一个数,表示最短时间
[样例输入]
5
3
5
1
8
4
[样例输出]
1
[数据规模]
对20%的数据,n<=10
对40%的数据,n<=100
对60%的数据,n<=5000
对100%的数据,n<=10000
(样例说明)。