noip普及组复赛
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,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。
NOIP普和组复赛试题c版本
{
if(d[i+l1][j+l2]!=-1)
d[i+l1][j+l2]++;
}//边上八个位置旳格子不是雷则
数值加1
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(
d[i][j]==-1) cout<<'*';
else cout<<d[i][j];
cout<<endl;
-5-
参照程序
➢ #include <iostream>
➢ using namespace std;
➢ int main()
➢{
➢
long d[102][102];
➢
long n,m;
➢
cin>>n>>m;
➢
long i,j;
➢
char ch;
➢
for(i=0;i<=n;i++)
➢
{
➢
for(j=0;j<=m;j++)
➢
for(int i=1;i<=n;i++)
➢
{
- 16 -
BYE
温馨提醒: 先了解题目在看题解。
试题分析
The END
2017. 07. 28
➢ 请计算前K天里,骑士一共取得了多少金币。 ➢ 对于全部数据,1≤K≤10000。
➢ 【分析】K旳规模比较少,直接用模拟,一天一天发金币。 ➢ N天发N枚金币,N递增1,剩余天数K-N ➢ 估计时间15-25分钟
noip普及组复赛模拟试题10答案
【试题描述】选拔考试即将开始,同学们陆续进入考场,哇,考场好大啊。
究竟star应该坐在哪张位置呢?考场门口贴了一张考场座位(m*n)明细表,其中考场里的有些位置是坏的不能坐,考号为1的同学的座位号是第一排第一列,即他的座位是1、1,2号同学的座位是1、2,以此类推,当然,如果某个座位是坏的,那么这个同学就往后延一个座位,后面的同学再依次排下去。
考场座位肯定够所有考生坐。
【输入描述】第1行:3个整数,m,n,k(m,n表示考场的座位是m行n列,k表示star的考号)m,n<=100;第2..m+1行:每行n个数代表考场明细0代表座位是好的,1代表座位是坏的)【输出描述】一行:两个整数代表star应该坐的位置【输入样例】4 4 50 0 0 00 0 1 00 0 0 10 0 0 0【输出样例】2 1【试题来源】常州长训班测试program ex1661;var k,i,j,s,m,n:integer;a:array[1..100,1..100] of 0..1;beginreadln(m,n,k);for i:=1 to m dofor j:=1 to n doread(a[i,j]);s:=0;for i:=1 to m dofor j:=1 to n dobeginif a[i,j]<>1 then inc(s);if s=k then begin writeln(i,' ',j); exit;end;end;end.输入 6 6 70 0 0 0 1 00 0 1 0 0 00 0 0 1 1 00 0 0 0 0 11 0 0 0 0 00 0 1 0 0 1 输出 2 2输入8 6 100 0 0 0 1 00 0 1 0 0 00 0 0 1 1 00 0 0 0 0 11 0 0 0 0 00 0 1 0 0 10 1 0 0 0 01 0 0 0 0 1输出 2 6【题目描述】一个农夫有n(n≤1000)头奶牛,可由于产奶太少,他决定把当天产奶最少的牛杀掉,但他有点舍不得,如果当天不只一头奶牛产奶,至少他便放过它们。
noip普及组复赛模拟试题17(附答案)
图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=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.输入12 78 12 18 7 11 3 20 15 14 26 21 16 输出11Y输入21 104 7 12 10 18 29 156 17 3 11 20 21 24 14 2 22 26 13 19 9 输出20F父母准备带你到新疆阿克苏旅行,你很高兴的开始准备旅行。
NOIP2000普及组复赛数据
4
内容见24.IN
5
第三题:乘积最大共26分
序号
输入
输出
分值
得分
1
61
101010
6
2
94
321044105
7
3
83
22222222
6
4
105
7777777777
7
第四题:单词接龙共36分
序号
输入
输出
分值
得分
1
内容见41.IN
6
2
内容见42.IN63 Nhomakorabea内容见43.IN
6
4
内容见44.IN
6
5
内容见45.IN
9
6
5
内容见45.IN
31
6
6
内容见46.IN
38
6
输入
输出
分值
得分
1
61
101010
10100
6
2
94
321044105
5166000
7
3
8 3
22222222
234256
6
4
10 5
7777777777
1722499009
7
第四题:单词接龙共36分
序号
输入
输出
分值
得分
1
内容见41.IN
15
6
2
内容见42.IN
19
6
3
内容见43.IN
43
6
4
内容见44.IN
6
6
内容见46.IN
6
选手学校班级邮编:
选手签名:指导教师签名:得分:
noip普及组复赛试题及答案
noip普及组复赛试题及答案一、选择题1. 在计算机科学中,以下哪个概念与数据结构最相关?A. 算法B. 操作系统C. 网络协议D. 编译原理答案:A2. 以下哪种排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D3. 在C++中,以下哪个关键字用于定义类?A. structB. unionC. enumD. typedef答案:A4. 以下哪个选项不是数据库管理系统(DBMS)的特性?A. 数据持久性B. 数据共享C. 数据加密D. 数据独立性答案:C5. 在计算机网络中,TCP和UDP协议分别属于哪一层?A. 传输层B. 应用层C. 网络层D. 物理层答案:A二、填空题1. 在计算机程序中,______ 用于定义数据的存储方式和组织形式。
答案:数据结构2. 一个算法的时间复杂度为O(1),表示该算法的执行时间与输入数据的规模______。
答案:无关3. 在C++中,______ 是一种特殊的类,它提供了一种方式来定义数据类型。
答案:typedef4. 数据库管理系统(DBMS)通常包含数据定义语言(DDL)、数据操纵语言(DML)和______。
答案:数据控制语言(DCL)5. 在计算机网络中,______ 协议负责在网络层进行数据包的路由选择。
答案:IP三、简答题1. 请简述面向对象编程(OOP)的三个基本特征。
答案:封装、继承、多态2. 描述二分查找算法的基本步骤。
答案:二分查找算法的基本步骤包括:首先确定数组是有序的,然后取中间元素与目标值比较,如果中间元素等于目标值,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找,直到找到目标值或查找范围为空。
四、编程题1. 编写一个函数,实现对整数数组的排序。
答案:以下是一个简单的冒泡排序算法实现:```cppvoid bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {swap(arr[j], arr[j+1]);}}}}```2. 编写一个函数,实现计算一个整数的阶乘。
NOIP20XX普及组复赛试题与解题报告
NOIP20XX普及组复赛试题与解题报告NOIP 20XX普及组解题报告一、ISBN号码【问题描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符,最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。
ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
【输入】输入文件只有一行,是一个字符序列,表示一本书的ISBN号码。
【输出】输出文件共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码。
【输入输出样例1】 0-670-82162-4Right【输入输出样例2】0-670-82162-00-670-82162-4【试题分析】基础字符串处理题,心细一点的基本都能得满分。
【参考程序】 program isbn; constinp=''; oup=''; vari,j,k,ans:longint; s:string; ch:char; procedure flink; beginassign(input,inp);reset(input); assign(output,oup); rewrite(output); end;procedure fclose; beginclose(input); close(output); end; begin flink;readln(s);// 输入字符串 j:=0;i:=1; ans:=0; while jk do inc(i); while tmp[j]j;if m0 then begin inc(j);tmp[j]:=row[i]; end; end;qsort(1,j);//对tmp数组排序flag:=tmp[k];//flag为前K项的最小值 i:=1;j:=0;while (i=flag then //如果该行能分割的人数不少于flag,说明此处可以添加通道 begin write(i); inc(j);if jk then write(' '); end; inc(i); end; writeln;//下面是求列通道,思想同上j:=0;for i:= 1 to n do beginif col[i]>0 then begin inc(j);tmp[j]:=col[i]; end; end; qsort(1,j); flag:=tmp[L]; i:=1; j:=0;while (i=flag then begin write(i); inc(j);if jL then write(' '); end; inc(i); end;fclose; end.三、传球游戏【问题描述】上体育课的时候,小蛮的老师经常带着同学们一起做游戏。
noip普及组复赛入门测试(答案+测试数据)
一、新龟兔赛跑(文件名xgtsp.pas)新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间T小时中的K小时拿来睡觉。
现在给你比赛的总时间T、兔子的睡觉时间K、兔子的速度U、乌龟的速度V,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数X,表示有X组输入数据。
每组数据只有一行,包括4个数T、K、U、V (1 ≤ T≤ 300,0 ≤ K ≤ T,1 ≤ U ≤ 100,1 ≤ V ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*t>U*(t-k) then writeln(1);if v*t<U*(t-k) then writeln(-1);if v*t=U*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:XQLC.PAS )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,……。
每次弹起的高度都是上一次高度的一半。
求小球第N次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入N,输出反弹高度和经过路程,结果保留两位小数。
NOIP普及组复赛试题
P1909 买铅笔题目描述P教师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。
她发觉商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价钱也有可能不同。
为了公平起见,P教师决定只买同一种包装的铅笔。
商店不许诺将铅笔的包装拆开,因此P教师可能需要购买超过n支铅笔才够给小朋友们发礼物。
此刻P教师想明白,在商店每种包装的数量都足够的情形下,要买够至少n支铅笔*最少*需要花费多少钱。
输入输出格式输入格式:输入的第一行包括一个正整数n,表示需要的铅笔数量。
接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价钱。
保证所有的7个数都是不超过10000的正整数。
输出格式:输出一行一个整数,表示P教师最少需要花费的钱。
输入输出样例输入样例#1:输出样例#1:输入样例#2:说明铅笔的三种包装别离是:•2支装,价钱为2;•50支装,价钱为30;•30支装,价钱为27。
P教师需要购买至少57支铅笔。
若是她选择购买第一种包装,那么她需要购买29份,共计2x29 = 58支,需要花费的钱为2x29 = 58。
事实上,P教师会选择购买第三种包装,如此需要买2份。
尽管最后买到的铅笔数量更多了,为30x2 = 60支,但花费却减少为27 x2 = 54,比第一种少。
关于第二种包装,尽管每支铅笔的价钱是最低的,但要够发必需买2份,实际的花费达到了30 x 2 = 60,因此P教师也可不能选择。
因此最后输出的答案是54。
【子任务】子任务会给出部份测试数据的特点。
若是你在解决题目中碰到了困难,能够尝试只解决一部份测试数据。
每一个测试点的数据规模及特点如下表:上表中“整倍数”的意义为:假设为“K”,表示对应数据所需要的铅笔数量n—定是每种包装铅笔数量的整倍数(这意味着必然能够不用多买铅笔)。
P2020 回文日期题目描述在日常生活中,通过年、月、日这三个要素能够表示出一个唯一确信的日期。
noip普及组复赛答案
noip普及组复赛答案【篇一:noip普及组复赛入门测试(答案+测试数据)】class=txt>新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间t小时中的k小时拿来睡觉。
现在给你比赛的总时间t、兔子的睡觉时间k、兔子的速度u、乌龟的速度v,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数x,表示有x组输入数据。
每组数据只有一行,包括4个数t、k、u、v (1 ≤ t≤ 300,0 ≤ k ≤ t,1 ≤ u ≤ 100,1 ≤ v ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*tu*(t-k) then writeln(1);if v*tu*(t-k) then writeln(-1);if v*t=u*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:xqlc.pas )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,??。
每次弹起的高度都是上一次高度的一半。
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 枚金。
NOIP2003普及组(复赛)
NOIP2003普及组复赛试题题一、乒乓球(Table.pas)【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。
其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。
华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。
在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):WWWWWWWWWWWWWWWWWWWWWWLW在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。
而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。
如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。
其中E表示比赛信息结束,程序应该忽略E之后的所有内容。
【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。
其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
【输入样例】WWWWWWWWWWWWWWWWWWWWWWLWE【输出样例】11:011:01:121:02:1题二、数字游戏(Game.pas)【问题描述】丁丁最近沉迷于一个数字游戏之中。
这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。
游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。
noip普及组复赛模拟试题15(附答案)
【基础】班委确定【试题描述】经过紧张而激烈的选拔考试,编程班终于浮出水面,一共有k位同学幸运的入选,这k位同学个个可都是精英,才华横溢,思维敏捷。
让谁做班长?让谁做学习委员?让谁做团委书记呢……?这可让班主任老师伤透了脑筋。
个个都优秀,个个都能干,实在是没有办法了。
抓阄吧!这个抓阄可不是普通的抓阄,老师让这k位同学围成一圈从一号位置开始顺时针报数报到m这个人就出圈(啊?猴子选大王啊!把我们当猴子啦?Of course not),出圈后就反向逆时针从下一个开始报数,报到n再出圈,然后再反向顺时针报到m出圈,反向逆时针报到n出圈……圈里的人越来越少,当还剩下5个人的时候那么这5个人就是编程班的班委。
Star很想当班委,为了能够当上班委,他想请你帮忙确定哪些位置是班委的位置。
【输入描述】一行:三个整数k,m和n【输出描述】一行:5个数,分别为5个班委位置的号码(号码从大到小排列)。
两个号码之间用一个空格隔开,最后一个号码没有空格【输入样例】 10 3 2【输出样例】 10 9 8 6 4【解题提示】样例说明:出圈顺序为:3 1 5 2 7 剩下4 6 8 9 10数据规模:10%的数据 k,n,m <= 1540%的数据 k,n,m <= 20060%的数据 k,n,m <= 50090%的数据 k,n,m <= 1000100%的数据 k<=1000 n,m <= 100000【试题来源】常州长训班测试var k,i,h,s,w:integer;t,z,m,n:int64;f:boolean; a:array[1..1000] of 0..1;b:array[1..5] of integer;begin readln(k,m,n); fillchar(a,sizeof(a),1);f:=true; s:=k; w:=0;while s>5 dobegint:=0;if f=true then begin h:=1;z:=m endelse begin h:=-1;z:=n end;while t<z dobeginw:=w+h; if w<=0 then w:=k+w;w:=w mod k;if w=0 then w:=k;t:=t+a[w];end;a[w]:=0;f:=not f;dec(s);end;t:=1;for i:=1 to k doif a[i]<>0 then begin b[t]:=i; inc(t);end;for i:=5 downto 2 do write(b[i],' ');write(b[1]);end.输入20 5 3 输出18 12 9 3 1输入40 9 5 输出31 25 16 2 1宝石手镯[Kolstad/Cox, 2006]贝茜在珠宝店闲逛时,买到了一个中意的手镯。
noip普及组复赛模拟试题26(答案)
noip普及组复赛模拟试题26(答案)1.数字反转(revere.cpp/c/pa)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。
新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
【输入】输入文件名为revere.in。
输入共1行,一个整数N。
【输出】输出文件名为revere.out。
输出共1行,一个整数,表示反转后的新数。
【输入输出样例1】revere.inrevere.out123321【输入输出样例2】Revere.inrevere.out-380-83【数据范围】-1,000,000,000≤N≤1,000,000,000。
var3,1,2:tring;n,i:integer;beginaign(input,'revere.in');reet(input);aign(output,'revere.out');rewrite(output);read(1);n:=length(1);if1[1]='-'thenbegin2:='-';fori:=1ton-1do1[i]:=1[i+1];delete(1,n,1);end;n:=length(1);fori:=1tondo3:=3+1[n-i+1];i:=1;while(3[i]='0')and(length(3)>1)dodelete(3,1,1);write(2+3);cloe(input);cloe(output);end.2.统计单词数(tat.cpp/c/pa)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。
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)。
noip普及组复赛模拟试题11答案
机器人深海探测是一个极富挑战性的高技术科学研究项目。
小雪参加了这一项目的研究工作。
潜水机器人可以携带规定有限的能量。
在深海探测过程中,机器人需要消耗一定的能量,但可以在机器人之间通过接触传递能量。
用多个潜水机器人接力潜水可以极大地提高潜水机器人的潜水深度。
现给定2个潜水机器人。
第1个潜水机器人最多可以携带x1单位的能量,每下潜1米需要消耗能量y1单位。
第2个潜水机器人最多可以携带x2单位的能量,每下潜1米需要消耗能量y2单位。
开始时2个潜水机器人均处于同一海平面高度为0,并且每个机器人初始时都携带了规定最多的能量。
计算用这2个机器人进行不返回的接力深海探测可下潜的最大深度。
输入:每行一个整数,依次为x1,x2,y1,y2;输出: 这2个登山机器人可下潜的最大深度,精确到小数点后2位。
例如输入:50500.010.01输出:7500.00var x1,x2,y1,y2,x,y,s:real;beginreadln(x1); readln(x2); readln(y1); readln(y2);s:=0;if (x1/y1)>(x2/y2) thenbeginx:=x1;y:=y1;endelse beginx:=x2;y:=y2;end;repeatx1:=x1-y1;x2:=x2-y2;s:=s+1;until x1+x2<=x;s:=s+x/y;writeln(s:0:2);readln;end.输入:40 0.02↙50 0.01↙输出:6334.00输入25350.150.25输出254.671233211.55.1输出131.002035年,智能机器人在各行各业中的应用已经十分普遍了,毕竟它做事时的精度与力量比一个普通人是强多了。
王涛的运输队里就有一个,是用来装卸货物的。
这天,他们的任务是要把N(2 <= N <= 50 )根废旧的条形钢材运送到钢铁厂重新冶炼。
这些钢材长短不同(有些还特别的长),为了便于运输,只好把它们切割成小段。
信奥赛普及组复赛试卷
信奥赛普及组复赛试卷一、单项选择题(每题2分,共30分)1. 在C++语言中,以下哪个符号用于定义一个整数变量?()A. #B. $.C. int.D. char.2. 一个完整的C++程序必须有()。
A. 预处理命令。
B. 输入输出语句。
C. 主函数。
D. 函数调用。
3. 在C++中,若定义了 `int a = 5;`,表达式 `a++` 的值为()。
A. 5.B. 6.C. 7.D. 8.4. 若有数组定义 `int arr[5] = {1, 2, 3, 4, 5};`,则访问数组元素`arr[3]` 的值为()。
A. 1.B. 2.C. 3.D. 4.5. 在C++中,用于从标准输入读取一个整数的函数是()。
A. scanf.B. cin.C. get.D. read.6. 以下关于函数的说法正确的是()。
A. 函数可以没有返回值。
B. 函数只能有一个参数。
C. 函数内部不能定义变量。
D. 函数名不能以数字开头。
7. 在C++中,若有函数声明 `void fun(int x);`,则函数 `fun` 的参数传递方式是()。
A. 值传递。
B. 地址传递。
C. 引用传递。
D. 指针传递。
8. 若要计算1到100的整数和,以下哪种循环结构最合适?()A. for循环。
B. while循环。
C. do - while循环。
D. 任意一种循环都可以。
9. 在C++中,以下关于字符串的操作正确的是()。
A. 可以直接用 `==` 比较两个字符串是否相等。
B. 字符串是基本数据类型。
C. 可以用 `strcpy` 函数复制字符串。
D. 字符串的长度可以用 `sizeof` 直接获取。
10. 若有结构体定义:cpp.struct Student {int id;char name[20];};定义一个结构体变量 `Student stu;` 后,要给成员变量 `id` 赋值为1001,以下正确的是()。
A. stu - > id = 1001;B. stu.id = 1001;C. (*stu).id = 1001;D. 以上都不对。
历年noip普及组复赛试题
历年noip普及组复赛试题
NOIP(全国青少年信息学奥林匹克竞赛)是中国的一项信息学竞赛活动,包括普及组和提高组两个组别。
普及组主要面向初中生和高中生,复赛试题是选拔普及组的参赛选手的关键环节。
以下是历年NOIP普及组复赛试题的一些例子:
1. 2019年NOIP普及组复赛试题:
题目1,给定一个长度为N的字符串S,求出它的最长回文子串的长度。
题目2,给定一个N×M的迷宫,起点为(1, 1),终点为(N, M),求从起点到终点的最短路径长度。
2. 2018年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长上升子序列的长度。
题目2,给定一个N×N的矩阵,求出从左上角到右下角的
最短路径长度,每次只能向右或向下移动。
3. 2017年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长
连续递增子序列的长度。
题目2,给定一个N×M的棋盘,每个格子上有一个非负整数,求从左上角到右下角的路径,使得路径上的数字之和最小。
4. 2016年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长
连续递减子序列的长度。
题目2,给定一个N×M的迷宫,起点为(1, 1),终点为(N, M),求从起点到终点的路径数。
以上只是一些例子,每年的试题都会涉及不同的知识点和算法,题目难度也会有所不同。
参赛选手需要具备扎实的编程基础和算法
思维,才能在复赛中取得好成绩。
希望以上内容能对你有所帮助。
noip2021普及组复赛题解
1. 珠心算考试注意看清题意:其中有多少个数,恰好等于集合中另外两个(不同的)数之和。
如此的题意加上100的规模,建议暴力3个for:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>usingnamespacestd;intn;inta[105];intmain(){freopen("","r",stdin);freopen("","w",stdout);scanf("%d",&n);for(inti=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);intres=0;for(inti=1;i<=n;i++){intok=0;for(intj=1;j<=n&&!ok;j++)if(j!=i){for(intk=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);return0;}2. 比例简化L很小,仍是列举,然后比较的话建议用乘法比较,幸免精度问题: #include<cstdio>#include<cstring>#include<iostream>usingnamespacestd;intA,B,L;intgcd(inta,intb){if(b==0)returna;returngcd(b,a%b);}intmain(){freopen("","r",stdin);freopen("","w",stdout);scanf("%d%d%d",&A,&B,&L);intba=1000000,bb=1;for(inti=1;i<=L;i++){for(intj=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);return0;}3. 螺旋矩阵没一圈的数量有规律的,最外面一圈(n-1)*4,然后每往里n-2,直到后要么只有一个点,要么4个点。
CSP-J (NOIP普及组) 复赛2010-2024考查内容一览表
T3纪念品背包
T4加*工领奖广搜、最短路
NOIP2018普及组序号题名考查内容
T1标题统计字符串
T2龙虎斗枚举、预处理
T3摆渡车动态规划(高级) T4对称二叉树二叉树
NOIP2017普及组序号题名考查内容
T1成绩顺序结构
T2图书管理员结构体排序
T3棋盘深搜、剪枝
T4跳房子二分、动态规划
NOIP2016普及组序号题名考查内容
T1买铅笔一重循环
T2回文日期回文
T3海港大模拟、队列
T4魔法阵枚举、前缀和
NOIP2015普及组序号题名考查内容
T1金币一重循环
T2扫雷游戏二维数组
T3求和组合数学
T4推销员贪心、优先队列
NOIP2014普及组序号题名考查内容
T1珠心算测验模拟
T2比例简化枚举、gcd
T3螺旋矩阵模拟、找规律
T4子矩阵动态规划(高级)
NOIP2013普及组序号题名考查内容
T1记数问题二重循环
T2表达式求值栈
T3小朋友的数字动态规划(高级)
T4车站分级拓扑排序
NOIP2012普及组
序号题名考查内容
T1质因数分解一重循环、质数
T2寻宝模拟、取模
T3摆花背包、动态规划
T4文化之旅最短路
NOIP2011普及组
序号题名考查内容
T1数字反转进制转换
T2统计单词数字符串
T3瑞士轮归并排序
T4表达式的值动态规划(高级)、栈
NOIP2010普及组
序号题名考查内容
T1数字统计二维数组
T2接水问题模拟
T3导弹拦截贪心
T4三国游戏贪心、博弈。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NOIP2011普及组复赛1 .数字反转(c/pas )【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。
新数也应满足整数的常见形式,即除非给 定的原数为零,否则反转后得到的新数的最高位数字不应为零。
(参见样例2)【输入】【输出】输出文件名为。
-1,000,000,000 < N< 1,000,000,000 o【解题】 这道题非常简单,可以读字符串处理,也可以读数字来处理,只不过要注意符号问题(以及 但测试数据没出)。
【法一】字符串处理Var i,l,k:i nteger;s:stri ng; p:boolea n; beginassig n(i nput, ”); reset(i npu t); assig n(output, ''); rewrite(out pu t); readl n(s); l:=le ngth(s); k:=1;if s[1]='-' the nbegin write('-'); k:=2; en d; p:=true;;for i:=l dow nto k dobeginif(p)an d((s[i]-0')) the n contin ue elsebegin write(s[i]); p :=false;; en d; en d;close(i npu t); close(out pu t); en d.【法二】数字处理Var f:i nteger;n,an s:lo ngint; beginassig n(i nput, ''); reset(i npu t); assig n(output, ''); rewrite(out pu t); readl n(n);输入文件名为。
输入共一行,一个整数No-0 ,begin f:=-1; n :=-n; end else f:=1; an s:=0; while n<>0 do begin an s:=a ns*10+n mod 10; n :=n div10;en d; an s:=a ns*f; writel n(a ns);close(i npu t); close(out pu t); en d.2.统计单词数c/cpp )【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统 计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数 和第一次出现的位置。
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的 某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2) 【输入】 输入文件名为,2行。
第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
【输出】输出文件名为。
只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开, 分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字 母在文章中的位置,位置从 0开始);如果单词在文章中没有出现,则直接输出一个整数 【输入输出样例1】【输入输出样例2解释】表示给定的单词to 在文章中没有出现,输出整数-1。
【数据范围】1W 单词长度W 10。
1W 文章长度W 1,000,000 。
【解题】这道题也不是很难,P rogram stat; var l,n,p :1 ongint; s,s1:stri ng; c:char; beginassig n(i npu t,''); reset(i npu t); assig n(outpu t,''); rewrite(out pu t); readl n(s);s:=upcase(s); 3.壬瑞士轮 c/pas)。
【输入输出样例1解释】输出结果表示给定的单词 To 在文章中出现两次,第一次出现的位置为 【输入输出样例2】-1。
在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。
前 者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。
后者的特点是较为公平,偶然性较低,但比赛 过程往往十分冗长。
本题中介绍的瑞士轮赛制,因最早使用于 1895年在瑞士举办的国际象棋比赛而得名。
它可以看作 是淘汰赛与循环赛的折衷,既保证了比赛的稳定性,又能使赛程不至于过长。
【问题描述】 2*N 名编号为1~2N 的选手共进行 R 轮比赛。
每轮比赛开始前,以及所有比赛结束后,都会按照总分 从高到低对选手进行一次排名。
选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分 和。
总分相同的,约定编号较小的选手排名靠前。
每轮比赛的对阵安排与该轮比赛开始前的排名有关:第 1名和第2名、第3名和第4名、……、第 2K - 1名和第2K 名、……、第2N - 1名和第2N 名,各进行一场比赛。
每场比赛胜者得 1分,负者得 0分。
也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表 现。
现给定每个选手的初始分数及其实力值,试计算在 R 轮比赛过后,排名第 Q 的选手编号是多少。
我们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。
【输入】 输入文件名为。
输入的第一行是三个正整数 赛,以及我们关心的名次 Q 。
第二行是2*N 选手的初始分数。
第三行是2*N 手的实力值。
【输出】 输出文件名为 输出只有一行,【输入输出样例】个非负整数S 1, s 个正整数w i , w 2,。
包含一个整数,即 R Q,每两个数之间用一个空格隔开,表示有 2,…,S 2N,每两个数之间用一个空格隔开,其中 …,W 2N,每两个数之间用一个空格隔开,其中 R 轮比赛结束后,排名第 Q 的选手的编号。
2*N 名选手、R 轮比S i 表示编号为i 的w 表示编号为i 的选【输入输出样例说明】 K NW 100; K NW 10,000 ; 【数据范围】 对于30%的数据, 对于50%的数据,对于 100% 的数据,1 W NW 100,000 , 1W RW 50, 1W QW 2N, 0 W s i , S 2,…,S 2N W 108, iw w i ,w 2,…,8 W 2N W 10。
【解题】 题目虽然长,但理解题意后就发现解题的瓶颈在于排序。
如果每一轮比赛的结果都进行快速排序,时间复杂度为 0(Riongn ),但事实证明这样只能拿 60分。
如何AC,这需要一个巧算法:分析得知,快速排序实际上进行了许多无用的工作: 如果两个人在第i 轮都赢了,那么第i 轮后的先后关系与第i-1轮是一样的;反之,如果两人都输了, 他们的先后关系也不会变。
所以,我们有一个新算法:一开始做一趟快速排序,然后对于每一轮,将此轮的 n 个赢者(他们的先后关系和上一轮不变)和n 个输者(他们的先后关系和上一轮也不变分开,然后就是归并,于是时间复杂 度 O (Rn)) (实践证明,如果单纯的排序 r 次,必然结果是超时。
事实上只需一次真正意义上的排序以后,在以后的比赛中,按原顺序分成两组,获胜组和失败组,这两组依然是有序的,再把这两组归并成一组,就可 以了。
总时间复杂度 O(N*R))算法类似于表达式计算,一个符号栈,两个数据栈。
记 示表达式s 为1的方案数。
f(a+b,0) = f(a,0)*f(b,0)f(a+b,1) = f(a,0)*f(b,0)+f(a,0)*f(b,1)+f(a,1)*f(b,0)f(a*b,0)=f(a,0)*f(b,0) + f(a,1)*f(b,0) + f(a,0)*f(b,1) f(a*b,1) = f(a,1) * f(b,1)f (s,O )表示表达式s 为0的方案数,f (s,1)表p rogram swiss;var a,b,v:array[1..200000]of longint; c,d:array[1..100000,1..2]of longint; n ,r,q,i,j:lo ngi nt;p rocedure qsort(l,r:l ongin t); var i,j,mid1,mid2,t:l ongint; begini:=l;j:=r; mid1:=a[(l+r)div 2]; mid2:=v[(l+r)div 2]; rep eat4.表达式的值c/pas )【问题描述】 对于1位二进制变量定义两种运算: ,即计算表达式时, 先计算X 运算,再计算®运算 。
先计算B X C ,其结果再与 A 做®运算。
_+(_*_),请你在横线处填入数字 0或者1,请问有多少种填法可以 2. “X”运算优先于“®”运算 例如:计算表达式 A ® B X C 时, 现给定一个未完成的表达式,例如使得表达式的值为0。
【输入】输入文件名为,共2行。
第1行为一个整数L ,表示给定的表达式中 除去横线外 的运算符和括号的个数。
第2行为一个字符串包含L 个字符,其中只包含’(’、’)’、’ +'、’ * '这4种字符,其中'('、’)’是左右括号,’+'、’ * '分别表示前面定义的运算符“®”和“X”。
这行字符按顺序 给出了给定表达式中除去变量外的运算符和括号。
【输出】 输出文件 请输出方案数对【输入输出样例 共1行。
包含一个整数,即所有的方案数。
10007取模后的结果。
1】注意:这个数可能会很大, 【输入输出样例说明】 给定的表达式包括横线字符之后为: _+(_*_) 在横线位置填入(0、0、0)、(0、1、0)、(0、0、1)时,表达式的值均为0,所以共有3种填法。
【数据范围】 对于对于 对于 对于 对于 【解题】 20%的数据有0 < LW 10。
50%的数据有 0 < LW 1,000。
70%的数据有 0< LW 10,000。
100%的数据有 0W LW 100,000。
50%的数据输入表达式中不含括号。
program exp;const maxn= 100010;op:array[1..4] of char = ('(','+','*',')');flag:array[1..4,1..4] of char = ( { ( } ('<','<','<','='),('<','>','<','>'),('<','>','>','>'),('>','>','>','>') ); maxn] of char;stack_data0, stack_data1:array[1..maxn] of longint; n,top_op, top_data, i, len:longint; a0, a1, b0, b1, t0, t1:longint; s: ansistring ;ch,now:char;procedure push_op(ch:char);。