noip普及组复赛模拟试题26

合集下载

CCF全国信息学奥林匹克联赛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普及组复赛模拟试题17(附答案)

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父母准备带你到新疆阿克苏旅行,你很高兴的开始准备旅行。

NOIP普及组分类题及答案.doc

NOIP普及组分类题及答案.doc

NOIP普及组(初赛)试题精选计算机系统1•在以下各项中,()不是CPU的组成部分。

(NOIP2007)A.控制器B.运算器C.寄存器D.主板【答案】Do CPU由控制器、运算器和寄存器组成。

2.在下列各项中,只有()不是计算机存储容量的常用单位。

(N0IP2007)A.ByteB. KBC. UBD. TB【答案】C… 存储容量:Byte=8 bit (位)、1KB=1O24B、1MB=1O24KB、1GB=1O24MB、1TB=1O24GB。

3.与十进制数1770对应的八进制数是()。

(NOIP2007)A.3350B. 3351C. 3352D. 3540【答案】C…考查进制转换,掌握十进制、二进制、八进制和十六进制互换,以及多个不同进制数的运算(转换为同一进制数进行计算)。

4.与十进制数28. 5625相等的四进制数是()。

(NOIP2008)A.123. 21B. 131. 22C. 130. 22D. 130. 21【答案】D…熟练掌握进制转换的知识。

5.计算机在工作过程中,若突然停电,()中的信息不会丢失。

(NOIP2008)A.ROM 和 RAMB. CPUC. ROMD. RAM【答案】C。

ROM (只读存储器)断电后信息不丢失,RAM (随机存储器,内存)断电后信息全部丢失。

6.在32*32点阵的“字库”中,汉字“北”与“京”的字模占用字节数之和是()。

(N0IP2A.512B. 256C. 384D. 128【答案】Bo 32*32点阵的字库,每个字占字节数为32*32/8=128字节(1个字节等于8个二进制位,lByte=8bits,而1位对应点阵中的1个点)。

所以2个汉字共要256个字节。

7.在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是()。

(NOIP2006)扎沃尔夫奖B.诺贝尔奖C.菲尔兹奖D.图灵奖【答案】D。

沃尔夫奖主要是奖励对推动人类科学与艺术文明做出杰出贡献的人士;诺贝尔奖有生理或医学奖、文学奖、物理学奖、化学奖、经济学奖和和平奖;菲尔兹奖一数学界的诺贝尔奖; 图灵奖一计算机界的诺贝尔奖,2000年姚期智获得“图灵奖”,也是迄今为止获得此项殊荣的唯一华裔计算机科学家。

noip普及组复赛试题及答案

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. 编写一个函数,实现计算一个整数的阶乘。

NOIP第十三届天下青少年信息学奥林匹克联赛复赛试题普及组

NOIP第十三届天下青少年信息学奥林匹克联赛复赛试题普及组

全国信息学奥林匹克联赛(NOIP2007 )复赛普及组全国信息学奥林匹克联赛(NOIP 2007)复赛普及组题目一览题目名称奖学金纪念品分组守望者的逃离Hanoi 双塔问题代号scholar group escape hanoi 输入文件输出文件时限 1 秒 1 秒 1 秒 1 秒(2007 年 11 月 17 日 3 小时达成 )说明:1.文件名(程序名和输入输出文件名)一定使用小写2. C/C++ 中函数 main() 的返回值种类一定是int ,程序正常结束时的返回值一定是0。

3. 全国一致评测时采纳的机器参照配置为:CPU 2.0GHz ,内存 256M 。

1.奖学金(scholar.pas/c/cpp)【问题描绘】某小学近来获取了一笔资助,打算取出此中一部分为学习成绩优异的前 5 名学生发奖学金。

期末,每个学生都有 3 门课的成绩:语文、数学、英语。

先按总分从高到低排序,假如两个同学总分同样,再按语文成绩从高到低排序,假如两个同学总分和语文成绩都同样,那么规定学号小的同学排在前方,这样,每个学生的排序是独一确立的。

任务:先依据输入的 3 门课的成绩计算总分,而后按上述规则排序,最后按排名次序输出前5 名学生的学号和总分。

注意,在前 5 名同学中,每一个人的奖学金都不同样,所以,你一定严格按上述规则排序。

比如,在某个正确答案中,假如前两行的输出数据(每行输出两个数:学号、总分)是:7 2795 279这两行数据的含义是:总分最高的两个同学的学号挨次是7 号、 5 号。

这两名同学的总分都是 279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7 的学生语文成绩更高一些。

假如你的前两名的输出数据是:5 2797 279则按输犯错误办理,不可以得分。

【输入】输入文件包含n+1行:第 1 行为一个正整数n,表示该校参加评比的学生人数。

第 2 到 n+1 行,每行有 3 个用空格分开的数字,每个数字都在0 到 100 之间。

NOIP2015复赛普及组测试试题

NOIP2015复赛普及组测试试题

NOIP2015复赛普及组试题————————————————————————————————作者:————————————————————————————————日期:CCF 全国信息学奥林匹克联赛(NOIP2015)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况金币扫雷游戏求和推销员中文题目名称coin mine sum salesman 英文题目与子目录名coin mine sum salesman 可执行文件名coin.in mine.in sum.in salesman.in 输入文件名coin.out mine.out sum.out s alesman.out 输出文件名每个测试1 秒 1 秒 1 秒 1 秒点时限第3 页共14 页【问题描述】 第 4 页共 14 页测试点数目 10 10 10 10每个测试点分值 10 10 10 10附加样例文件 有有 有 有结果比较方式全文比较(过滤行末空格及文末回车)题目类型 传统 传统 传统 传统 运行内存上限128M128M128M128M二.提交源程序文件名对于 C++语言coin.cpp mine.cpp sum.cpp salesman.cpp【问题描述】 第 5 页共 14 页对于 C 语言 coin.c mine.c sum.c salesman.c对于 pascal 语言coin.pas mine.pas sum.pas salesman.pas三.编译命令(不包含任何优化开关)对于 C++语言 g++ -o coin coin.cpp -lm g++ -o mine mine.cpp -lm g++ -o sum sum.cpp -lm g++ -o salesmansalesman.cpp-lm对于 C 语言gcc -o coin coin.c -lm gcc -omine mine.c -lm gcc -o sum sum.c -lm gcc -o salesmansalesman.c -lm 对于pascal 语言fpc coin.pas fpc mine.pas fpc sum.pas fpc salesman.pas【问题描述】注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

noip普及组复赛入门测试(答案+测试数据)

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,输出反弹高度和经过路程,结果保留两位小数。

NOIP2012普及组复赛试题及解答

NOIP2012普及组复赛试题及解答
第 5 页 共 10页
全国信息学奥林匹克联赛(NOIP2012)复赛 试题及解答
普及组
start--; do{ start++; start%=m; //start是刚进入第i+1层时的房间号 if (a[i][start][0]==1) //此房间有楼梯 { k--; } } while (k!=0); //k!=0表示尚未找到牌号所指示的房间 } fprintf(outputfp,"%d\n",temp); } fclose(inputfp); fclose(outputfp); return 0; }
第 3 页 共 10页
全国信息学奥林匹克联赛(NOIP2012)复赛 试题及解答
普及组
2.寻宝
(treasure.cpp/c/pas) 传说很遥远的藏宝楼顶层藏着诱人的宝藏。 小明历尽千辛万苦终于找到传说中的这个藏 宝楼,藏宝楼的门 口竖着一个木板,上面写有几个大字:寻宝说明书。说明书的内容如下: 藏宝楼共有 N+1 层, 最上面一层是顶层, 顶层有一个房间里面藏着宝藏。 除了顶层外,藏宝楼另有 N 层, 每层 M 个房间, 这 M 个房间围成一圈并按逆时针方向依次编号为 0, …, M-1。其中一些房间有通往上一层的 楼梯,每层楼的楼梯设计可能不同。每个房间里有一个 指示牌,指示牌上有一个数字 x,表示从这个房间开始 按逆时针方向选择第 x 个有楼梯的房 间(假定该房间的编号为 k) ,从该房间上楼,上楼后到达上一层的 k 号 房间。比如当前房 间的指示牌上写着 2, 则按逆时针方向开始尝试, 找到第 2 个有楼梯的房间, 从该房间上楼。 如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。 寻宝说明书的最后用红色大号字体写着: “寻宝须知:帮助你找到每层上楼房间的指示 牌上的数字(即每 层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥” 。 请帮助小明算出这个打开宝箱的密钥。 【输入】 输入文件为 treasure.in 第一行 2 个整数 N 和 M,之间用一个空格隔开。N 表示除了顶层外藏宝楼共 N 层楼, M 表示除顶层外每层楼有 M 个房间。 接下来 N*M 行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况, 其中第(i-1)*M+j 行表示第 i 层 j-1 号房间的情况(i=1, 2, …, N;j=1, 2, … ,M) 。第一个整数 表示该房间是否有楼梯通往上一层 (0 表示没有,1 表示有) ,第二个整数表示指示牌上的数 字。注意,从 j 号房间的楼梯爬到上一层到达的房间 一定也是 j 号房间。 最后一行,一个整数,表示小明从藏宝楼底层的几号房间进入开始寻宝(注:房间编号 从 0 开始) 。 【输出】 输出文件名为 treasure.out。 输出只有一行,一个整数,表示打开宝箱的密钥,这个数可能会很大,请输 出对 20123 取模的结果即可。 【输入输出样例】 treasure.in 2 3 1 2 0 3 1 4 0 1 1 5 1 2 1

NOIP普及组复赛试题

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普及组复赛答案【篇一: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复赛普及组试题

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 枚金。

NOIP2013复赛普及组试题

NOIP2013复赛普及组试题

NOIP2013复赛普及组试题CCF全国信息学奥林匹克联赛(NOIP2013)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况三.编译命令(不包含任何优化开关)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+,2.71GHz,内存2G,上述时限以此配置为准。

4、只提供Linux 格式附加样例文件。

5、特别提醒:评测在NOI Linux 下进行。

1.记数问题(count.cpp/c/pas)【问题描述】试计算在区间1 到n 的所有整数中,数字x (0 ≤ x ≤ 9)共出现了多少次?例如,在1 到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。

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

输入共1 行,包含2 个整数n、x,之间用一个空格隔开。

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

输出共1 行,包含一个整数,表示x 出现的次数。

【输入输出样例】【数据说明】对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。

2.表达式求值(expr.cpp/c/pas)【问题描述】给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

【输入】输入文件为expr.in。

输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0 到231-1 之间的整数。

输入数据保证这一行只有0~ 9、+、*这12 种字符。

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

输出只有一行,包含一个整数,表示这个表达式的值。

注意:当答案长度多于4 位时,请只输出最后4 位,前导0 不输出。

【输入输出样例1】【输入输出样例2】【输入输出样例3】【输入输出样例说明】样例1 计算的结果为8,直接输出8。

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

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

1.质因数分解(prime.cpp/c/pas)【问题描述】已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数。

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

输入只有一行,包含一个正整数n。

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

输出只有一行,包含一个正整数p,即较大的那个质数。

【输入输出样例】prime.in prime.out21 7【数据范围】对于60%的数据,6 ≤ n ≤ 1000。

对于100%的数据,6 ≤ n ≤ 2*109。

var i,j,n:longint;f:boolean;function sushu(i:longint):boolean;beginf:=true;for j:=2 to trunc(i/2) doif i mod j=0 then begin f:=false; sushu:=false; exit; end;if f then sushu:=true;end;beginassign(input,'prime.in');assign(output,'prime.out');reset(input);rewrite(output);readln(n);for i:=trunc(n/2) downto 2 doif (n mod i=0) and (sushu(i)) then beginwriteln(i);break;end;close(input);close(output);end.输入998 输出499 输入1999520027 输出99991设有一个数组A:array [0..N-1] of integer;存放的元素为0~N-1(1<N<=10)之间的整数,且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)要求编程解决以下问题:(1)给出数组A后,求出其编码;(2)给出数组A的编码后,求出A中的原数据程序样例:例一:输入:Stat=1 {表示要解决的第(1)问题}N=8 {输入8个数}A=1 0 3 2 5 6 7 4输出:B=0 0 2 2 4 5 6 4例二:输入:Stat=2 {表示要解决的第(2)问题}N=7B=0 1 0 0 4 5 6输出:A=2 3 1 0 4 5 6[解]第1个问题的解法:用穷举搜索法。

NOIP竞赛模拟试题

NOIP竞赛模拟试题

NOIP2016普及组复赛模拟赛试卷普及组(请选手务必仔细阅读本页内容)二.提交源程序文件名三.编译命令(不包含任何优化开关)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。

3、统一评测时采用的机器配置为:CPU P4 3.0GHz,内存 2G,上述时限以此配置为准。

4、特别提醒:评测在Windows下进行,评测软件为cena8.0。

River Hopscotch(jump.pas/c/cpp)【问题描述】每年,奶牛们都举办一种特殊的跳房子游戏,在这个游戏中,大家小心翼翼地在河中的岩石上跳。

这个游戏在一条笔直的河中进行,以一块岩石表示开始,以另一块距离起点L单位长度的岩石表示结束。

在这两块岩石中间还有N 块岩石,每块的位置距离起点是 Di 个单位长度。

玩这个游戏的时候,每头牛从开始的那块岩石想办法要跳到表示结束的那块岩石上。

中间只能在从某块岩石跳跃到另一块岩石,反复的这样跳。

当然,不够敏捷的牛永远跳不到终点,最终只能落入河中。

农民 John 为他的牛感到自豪,每年都观看比赛。

随着时间的推移,他对于那些胆小的只能跳过很短距离的牛感到厌烦。

为了那些牛,其他农民会把岩石的间距弄得很小。

他计划移除一些岩石,从而增加奶牛在跳跃时需要的最短距离。

他不能移除开始和结束的两块岩石。

但是除此之外他可以移除 M 块岩石。

FJ 希望知道他能够增加多少最短跳跃距离。

求当他移除了M块岩石后,奶牛从开始跳到结束的岩石,每次跳跃的最短距离至多可以增加到多少。

【输入格式】第1行: 三个用空格分开的整数,分别是 L, N 和 M。

第2..N+1行: 每行一个整数,表示中间N块岩石的位置,没有两块岩石处于同一位置。

【输出格式】输出共一行一个整数,表示移除某M块岩石后,相邻岩石间距最小值的最大可能情况。

【输入样例】25 5 2214112117【输出样例】4【输入说明】中间有 5 块岩石,坐标 2, 11, 14, 17 和 21。

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

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

【试题描述】给出一个正整数n,然后对n进行一系列处理,处理用以下代码表示:0不做任何处理1对原数加上100,若加上100后大于1000,则再减去1000.2对原数减去100,若减去100后小于0,则再加上2003对原数除2取整4对原数乘4,若乘4之后大于1000,则除以1000取余数。

问题:输入n,k后,将n作为原数(1≤n <1000),k为处理码的十进制表示(1<k ≤30000)。

要求将k化为五进制的数,然后以该五进制数从高位到低位的顺序,分别将每位数字作为处理码对原数按上述规则进行处理,求处理后的结果。

【输入描述】n k (2个整数)【输出描述】处理后的结果【输入样例】33 247【输出样例】28【解题提示】样例说明:k=247 化为五进制数:1442,则处理系列为:133+100=1334133*4=5324 532*4=2128 (除以1000取余数,成为128)2128-100=28所以输出28program ex1764;var n,k,i,t,l:integer;st1,st2:string;beginreadln(n,k);st2:='';repeatt:=k mod 5;str(t,st1);st2:=st1+st2;k:=k div 5;until k=0;l:=length(st2);for i:=1 to l docase st2[i] of'1':begin n:=n+100; if n>1000 then n:=n-1000;end;'2':begin n:=n-100;if n<0 then n:=n+200; end;'3':begin n:=n div 2; end;'4':begin n:=n*4;if n>1000 then n:=n mod 1000;end;end;writeln(n);end.输入56 1249 输出936 输入512 20000 输出612输入1000 30000 输出200Description《贫民窟的百万富翁》获得2009年美国奥斯卡最佳影片,影片的主人公是一个叫贾马尔的小男孩,他在贫民窟长大,后来他参加了一档印度版的《谁想成为百万富翁》电视直播节目,他的特殊成长经历居然使他能够回答这个节目中的每一个问题,最后成功获得百万奖金。

NOIP2006普及组复赛试题(附题解)

NOIP2006普及组复赛试题(附题解)

NOIP2006普及组解题报告Kyd Dong 1.明明的随机数(random.pas/c/cpp)【问题描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。

然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。

请你协助明明完成“去重”与“排序”的工作。

【输入文件】输入文件random.in 有2行,第1行为1个正整数,表示所生成的随机数的个数:N第2行有N个用空格隔开的正整数,为所产生的随机数。

【输出文件】输出文件random.out 也是2行,第1行为1个正整数M,表示不相同的随机数的个数。

第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

【输入样例】1020 40 32 67 40 20 89 300 400 15【输出样例】815 20 32 40 67 89 300 400【试题分析】简单的映射排序,用一个数组s[1..n]用一个数组a[1..1000]来储存状况,先清空数组为0,在读入s[i]之后,先判断a[s[i]]是否为1,是则再读下一个数据,不是则把a[s[i]]赋值为1,m←m+1。

在输出时,则先输出m,再用一个循环输出各个值,即用如下伪代码:For i←1 to 1000 do{If a[i]=1Then 打印i;}当然还有许多不同的方法,这里只给出代码,供读者自己研究。

【程序代码】1.program random; {映射排序}varp:array [1..1000] of shortint; {当前数已有标记1} n,l:shortint;a,max,i:integer;input,output:text;beginassign(input,'random.in');assign(output,'random.out');reset(input);readln(input,n);fillchar(p,sizeof(p),0);max:=-1;l:=0; {max:存最大数, l:不同数字的个数}for i:=1 to n dobeginread(input,a);if p[a]=0 then begin p[a]:=1;l:=l+1 end; {当前数未重复,则标记并记数}if a>max then max:=a;end;rewrite(output);writeln(output,l);for i:=1 to max doif p[i]=1 then write(output,i,' ');close(input);close(output);end2.program random; { 插入排序}var p:array [1..1000] of boolean;a:array [1..100] of integer;i,n,j,g:integer;input,output:text;procedure swap(var a,b:integer);var c:integer;beginc:=a;a:=b;b:=c;end;beginassign(input,'random.in');assign(output,'random.out');reset(input);readln(input,n);fillchar(p,sizeof(p),false);g:=2;read(input,a[1]);p[a[1]]:=true;for i:=2 to n dobeginread(input,a[g]);if p[a[g]]=falsethenbeginp[a[g]]:=true; {当前数已有标记}j:=g; {插入排序}while j>1 dobeginif a[j]<a[j-1] then swap(a[j-1],a[j]); j:=j-1;end;g:=g+1;end;end;rewrite(output);writeln(output,g-1);for i:=1 to g-1 do write(output,a[i],' ');close(output);close(input);end.3.program random; { 插入排序}var a:array [1..100] of integer;i,j,k,l,n,g:integer;input,output:text;beginassign(input,'random.in');assign(output,'random.out');reset(input);readln(input,n);g:=1;read(input,a[1]);for i:=2 to n dobeginread(input,k);j:=1;while (k>a[j]) and (j<=g) do j:=j+1; {找插入位置} if k<a[j] then {中间插入} beging:=g+1;for l:=g downto j+1 do a[l]:=a[l-1];a[j]:=k;end;if j>g then begin g:=g+1;a[g]:=k end; {最后插入} end;rewrite(output);writeln(output,g);for i:=1 to g-1 do write(output,a[i],' ');writeln(output,a[g]);close(output);close(input);end.4.program random; { 链表插入排序}typelink=^node;node=recorddata:integer;next:link;end;var h,t,r,s:link;i,g,n,k:integer;input,output:text;beginassign(input,'random.in');assign(output,'random.out');reset(input);readln(input,n);g:=1;new(t);read(input,t^.data);t^.next:=nil;h:=t; {用第一个数建立链首指针}for i:=2 to n do {插入其余的数}beginread(input,k);if k<h^.data thenbegin new(t);t^.data:=k;t^.next:=h;h:=t;g:=g+1 end{链首插入}elsebeginr:=h;while (k>r^.data) and (r^.next<>nil) do begins:=r;r:=r^.next end; {在链中查找插入位置}if k<r^.data thenbeginnew(t);t^.data:=k;s^.next:=t;t^.next:=r;g:=g+1 end {处理在链中插入}else if (k<>r^.data) and (r^.next=nil) thenbeginnew(t);t^.data:=k;r^.next:=t;t^.next:=nil;g:=g+1 end {处理在链尾插入}end;end;rewrite(output);writeln(output,g);repeatwrite(output,r^.data,' ');r:=r^.next;until r=nil;close(output);close(input);end.5.program random; { 树排序}var a:array [1..100,1..3] of integer;i,n,g:integer;input,output:text;procedure px(s:integer); {建树,s:树中当前结点,i:待插入点}beginif a[i,2]<a[s,2] then if a[s,1]=0 then begin a[s,1]:=i;g:=g+1 end {插入左子树}else begin s:=a[s,1];px(s) end;if a[i,2]>a[s,2] then if a[s,3]=0 then begin a[s,3]:=i;g:=g+1 end {插入右子树}else begin s:=a[s,3];px(s) end;end;procedure print(s:integer); {中序遍历}beginif a[s,1]<>0 then print(a[s,1]); {左子树不空,则递归} write(output,a[s,2],' '); {输出当前父结点}if a[s,3]<>0 then print(a[s,3]); {右子树不空,则递归} end;beginassign(input,'random.in');assign(output,'random.out');reset(input);readln(input,n);fillchar(a,sizeof(a),0);read(input,a[g,2]);for i:=2 to n do begin read(input,a[i,2]);px(1) end; {建排序二叉树}rewrite(output);writeln(output,g);print(1);close(output);close(input);end.2.开心的金明(happy.pas/c/cpp)【问题描述】金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。

信奥赛普及组复赛试卷

信奥赛普及组复赛试卷

信奥赛普及组复赛试卷一、单项选择题(每题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. 以上都不对。

学科竞赛-CCF全国信息学奥林匹克联赛(NOIP2018)普及组复赛试题

学科竞赛-CCF全国信息学奥林匹克联赛(NOIP2018)普及组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2018)普及组复赛试题CCF全国信息学奥林匹克联赛(NOIP2018)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存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,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。

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

1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

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

输入共 1 行,一个整数N。

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

输出共 1 行,一个整数,表示反转后的新数。

【输入输出样例1】reverse.in reverse.out
123 321
【输入输出样例2】Reverse.in reverse.out
-380 -83
【数据范围】-1,000,000,000 ≤N≤1,000,000,000。

2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章
中出现的次数和第一次出现的位置。

注意:匹配单词时,不区分大小写,但要求完全匹配,
即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),
如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入】输入文件名为stat.in,2 行。

第 1 行为一个字符串,其中只含字母,表示给定单词;
第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

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

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,
分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字
母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。

【输入输出样例1】stat.in stat.out
To
to be or not to be is a question
2 0
【输入输出样例 1 说明】输出结果表示给定的单词To 在文章中出现两次,第一次出现的位置为0。

【输入输出样例2】stat.in stat.out
to
Did the Ottoman Empire lose its power at that time
-1
【输入输出样例 2 说明】表示给定的单词to 在文章中没有出现,输出整数-1。

【数据范围】1 ≤单词长度≤10。

1 ≤文章长度≤1,000,000
3.数字统计(two.pas/c/cpp) 【问题描述】请统计某个给定范围[L, R]的所有整数中,数字2 出现的次数。

比如给定范围[2, 22],数字 2 在数2中出现了1次,在数12中出现 1 次,在数20 中出现 1 次,在数21 中出现1 次,在数22 中出现2 次,所以数字2 在该范围内一共出现了6次。

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

输入共1 行,为两个正整数L 和R,之间用一个空格隔开。

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

输出共1 行,表示数字 2 出现的次数。

Two.out
【输入输出样例1】
two.in
2 22 6
【输入输出样例2】
two.out
two.in
2 100 20
【数据范围】 1 ≤L ≤R≤10000。

4. 接水问题(water.pas/c/cpp)【问题描述】学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。

现在有n 名同学准备接水,他们的初始接水顺序已经确定。

将这些同学按接水顺序从1到n 编号,i号同学的接水量为wi。

接水开始时,1 到m号同学各占一个水龙头,并同时打开水龙头接水。

当其中某名同学j 完成其接水量要求wj 后,下一名排队等候接水的同学k马上接替j 同学的位置开始接水。

这个换人的过程是瞬间完成的,且没有任何水的浪费。

即j 同学第x 秒结束时完成接水,则k 同学第x+1 秒立刻开始接水。

若当前接水人数n’不足m,则只有n’个龙头供水,其它m−n’个龙头关闭。

现在给出n名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。

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

第1 行2 个整数n 和m,用一个空格隔开,分别表示接水人数和龙头个数。

第2 行n 个整数w1、w2、……、wn,每两个整数之间用一个空格隔开,wi表示i 号同学的接水量。

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

输出只有一行,1 个整数,表示接水所需的总时间。

water.out
【输入输出样例1】
water.in
5 3
4
4 4 1 2 1
【输入输出样例1解释】
第1 秒,3 人接水。

第1秒结束时,1、2、3 号同学每人的已接水量为1,3 号同学接完水,4 号同学接替 3 号同学开始接水。

第2 秒,3 人接水。

第 2 秒结束时,1、2 号同学每人的已接水量为2,4 号同学的已接水量为1。

第3 秒,3 人接水。

第 3 秒结束时,1、2 号同学每人的已接水量为3,4 号同学的已接水量为2。

4号同学接完水,5 号同学接替 4 号同学开始接水。

第4 秒,3 人接水。

第 4 秒结束时,1、2 号同学每人的已接水量为4,5 号同学的已接水量为1。

1、2、5 号同学接完水,即所有人完成接水。

总接水时间为 4 秒。

【输入输出样例2】
water.in water.out
163
8 4
23 71 87 32 70 93 80
76
【数据范围】
1 ≤n ≤10000,1 ≤m≤100 且m≤n;
1 ≤wi ≤100。

相关文档
最新文档