NOIP复赛模拟试题I

合集下载

Pascal历届NOIP复赛试题(1)-分析

Pascal历届NOIP复赛试题(1)-分析

第12讲-历届NOIP复赛试题(1)模拟试题1. Cantor表(cantor.pas/c/cpp)【问题描述】现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。

他是用下面这一张表来证明这一命题的:我们以Z字形给上表的每一项编号。

第一项是1/1,然后是1/2,2/1,3/1,2/2,…【输入】整数N(1≤N≤10000000)【输出】表中的第N项【样例输入】7【样例输出】- 1 -1/4【分析】基础题,模拟。

首先确定所在斜行,然后针对奇数行和偶数行进行计算。

【参考代码】varn,x:longint ;beginassign(input,'cantor.in');reset(input);assign(output,'cantor.out');rewrite(output);readln(n);x:=0;repeat//确定所在的斜行inc(x);n:=n-x ;until n<=0;if x mod2=0then write((x+n),'/',(1-n))//确定如何输出else writeln((1-n),'/',(x+n));close(input);close(output );end.2. 回文数(huiwen.pas/c/cpp)【问题描述】若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

例如:给定一个10进制数56,将56加56(即把56从右向左读),得到121是一个回文数。

又如:对于10进制数87:STEP1:87+78 = 165 STEP2:165+561 = 726STEP3:726+627 = 1353 STEP4:1353+3531 = 4884在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。

写一个程序,给定一个N(2<=N<=10,N=16)进制数M,求最少经过几步可以得到回文数。

NOIP复赛模拟题

NOIP复赛模拟题

NOIP2006复赛模拟题(普及组水平)(时间:3小时)注意事项:1. 严格按照题目所要求的格式进行输入、输出。

2. 题目测试数据有严格的时间,超时不得分。

所有题目的时限均为1秒。

3. 输入文件格式不用判错。

程序文件名、输入输出文件名等请严格按照要求。

4. 本次比赛共4题。

5. 同时提交pas、exe文件,请使用freepascal编译。

编译后的exe请留意是否能正确运行。

为方便测试,所有pas、exe均存在一个文件夹中,该文件夹用你的中文名字命名,然后把整个文件夹压缩为一个rar文件(该文件也是用你的中文名字命名)提交到老师邮箱:*************。

第一题位置(posi.pas)求数A在数组B中的位置.输入及格式:第一行是数A ,一维数组B的元素个数N(N<=105),中间用空格隔开。

第二行是已按升序排列的一维数组B (-32768<B[i],A<32767),数间用空格隔开。

输出及格式:数A在B中的下标。

B中如果存在多个A,则输出下标最小的一个。

如果B 中不存在A,则输出“-1”输入样例1:3 61 3 3 4 5 10输出样例1:2输入样例2:1 33 4 5输出样例2:-1第二题面积(area.pas)一幅图由0和*组成,编程计算由“*”号所围成的图形的面积。

面积是指*号所围成的闭合曲线中0的数目。

输入:由0,*组成的图输出:面积数输入样例:0000000000000**000000*00*0000*000*00000***000000000000输出样例:5输入样例2:000000000000*000*0*0输出样例2:第三题阶乘位数(jc.pas)问题描述:在很多软件中需要用到较大的整数。

比如一些软件将大数用于数据安全传送的密匙或者密码编译等等。

在这个问题中,你要根据给你的整数,算出这个数的阶乘的位数。

输入格式:输入文件包含若干行整数。

第一行为n,表示有n组数据,接下来是n行,每行一个整数m(1≤m≤107)。

NOIP复赛模拟题一

NOIP复赛模拟题一

NOIP复赛模拟题一1、与3和5无关的数(num.cpp)描述一个正整数x,如果它能被x整除,或者它的十进制表示法中某个位数上的数字为x,则称其为与x相关的数.现求所有小于等于n(n<300)的与x无关的正整数的平方和.<300)的与x无关的正整数的平方和.</300)的与X无关的正整数的平方和.输入输入为一行,正整数n,(n<300)输出输出小于等于n的与3和5无关的正整数的平方和样例输入8(8^2+7^2+4^2+2^2+1^2)样例输出1342、小白鼠再排队(mouse.cpp)描述N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。

现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。

帽子的颜色用“red”,“blue”等字符串来表示。

不同的小白鼠可以戴相同颜色的帽子。

白鼠的重量用整数表示。

输入输入第一行为一个整数N,表示小白鼠的数目。

下面有N行,每行是一只白鼠的信息。

第一个为正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。

注意:白鼠的重量各不相同。

输出按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。

样例输入330 red50 blue40 green样例输出redgreenblue3、滑雪(skate.cpp)描述Michael喜欢滑雪百这并不奇怪,因为滑雪的确很刺激。

可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。

Michael想知道载一个区域中最长的滑坡。

区域由一个二维数组给出。

数组的每个数字代表点的高度。

下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。

在上面的例子中,一条可滑行的滑坡为24-17-16-1。

NOIP复赛模拟试题I.doc

NOIP复赛模拟试题I.doc

NOIP 复赛模拟试题(I )1. 医院设置(hospital.cpp )【问题描述】设有一棵二叉树(如下閔,其中圈中的数字表示结点中居民的人口,圈边h 数字表示结 点编号。

现在要求在某个结点上建立一个返院,使所奋佔W 所走的路程之和为最小,同吋约 定,相邻结点之M 的距离为1。

就木阁而言,若医院建在1处,则距离和 =4+12+2*20+2*40=136;若民院建在 3 处,则距离和=4*2+13+20+40=81……【输入格式(hospital.in )]其中第一行一个整数n,表示树的结点数(n<=100)。

接K 来的n 行 每行描述了一个结点的状况,包含三个整数,整数之间川空格(一 个或多个)分隔,其中:第一个数为店民人口数;第二个数为左链 接,为0表示无链接;第三个数为右链接,为0表示无链接。

【输出格式(hospital.out )】该文件只有一个整数,表示最小距离和。

【样例输入】 5 1323400 12 4 5 20 0 0 40 0 0【样例输出】812. 而税(area.cpp )【问题描述】编程计算由“* ”号围成的下列图形的面积。

面积计算方法是统计*号所围成的闭合曲线中 水平线和垂直线交点的数目。

如右K 图所示,在10*10的二维数组中,有“围住了 15个点, 因此面积为15。

在输入中,为了方便起见使用“1”来代替右图中的“*”。

【输入格式(area.in )】°输入数据保证仅冇一个10*10的01矩阵° 【输出格式(area.out )】o0 00 0 一个数,表示面积 【样例输入】000000000000001110000000100100 0000010010 0010001010()10101 0 0 1 0010*******0010000100 00011111000000000000【样例输出】153.极值问题(number.cpp)【问题描述】已知m、n为整数,且满足下列两个条件:①m、nG { 1 , 2 ,…,k},即Km, n^k②(n2—m*n —m2) 2=1你的任务是:编程输入正整数k (l<k<109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。

NOIP提高组复赛题目

NOIP提高组复赛题目

第一题题库NOIP20071.统计数字(count.pas/c/cpp)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。

已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

【输入】输入文件count.in包含n+1行:第1行是整数n,表示自然数的个数。

第2~n+1行每行一个自然数。

【输出】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。

每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

【输入输出样例】【限制】40%的数据满足:1<=n <=100080%的数据满足:1<=n <=50000100%的数据满足:1<=n <=200000,每个数均不超过1 500 000 000(1.5*109)NOIP20081. 笨小猴(wird.pas/c/cpp)【问题描述】笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。

但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn 是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn 是一个质数,那么笨小猴就认为这是个Lucky Word ,这样的单词很可能就是正确的答案。

【输入】输入文件word.in 只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。

【输出】输出文件word.out 共两行,第一行是一个字符串,假设输入的的单词是Lucky Word ,那么输出“Lucky Word ”,否则输出“No Answer ”;第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn 的值,否则输出0。

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

NOIP2021复赛提高组模拟试题

NOIP2021复赛提高组模拟试题

NOIP2021复赛提高组模拟试题ccf全国信息学奥林匹克联赛(noip2021)复赛day1第二轮CCF国家信息学奥林匹克联盟(noip 2022)提高组day1(请仔细阅读本页)一、题目概况中文题目名称英文题目与子目录名可执行文件名输入文件名输出文件名每个测试点时限测试点数目每个测试点分值附加样例文件结果比较方式题目类型运行内存上限二、提交C++语言的源程序文件名,C语言的源程序文件名,Pascal语言的源程序文件名三、编译命令(不包含优化开关)对于C++语言对于C语言对于Pascal语言注意事项:1.文件名(程序名和输入/输出文件名)必须使用小写英语。

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

3.国家统一评估使用的机器配置为cpuamdathlon(TM)64x2dualcorecpu5200+、2.71ghz和2G内存。

以上时限以本配置为准。

4.仅提供Linux格式的其他示例文件。

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

6.为了便于评估,请使用您姓名的拼音作为文件夹名称,并将原始程序直接保存在文件夹中,无需创建新的子文件夹。

g++-opfpf.cpp-g++-otoytoy.cpplmclmgcc-opfpf.c-lmgcc-lmfpcpf.pasfpctoy.pasg++-orunningrunning.cpp-lmgcc-orunningrunning.c-lmfpcrunning.paspf.cpppf.cpf.pastoy.cpptoy.ctoy.pasrunning.cpprunning.crunning.pas斐波那契玩具跑步pftoyrunningpftoyrunningpf.intoy.inrunning.inpf.outtoy.outrunning.out1s1s1s102 0201055是是是全文比较(忽略行末空格和行尾回车)传统传统传统128mb128mb128mb第1页,共5页CCF国家信息学奥林匹克联盟(noip2022)半决赛第1天1.斐波那契(pf.pas/c/cpp)【问题描述】他是斐波那契迷。

NOIP复赛模拟练习题

NOIP复赛模拟练习题

NOIP复赛模拟练习题(一)1.埃及分数源文件:egfranc.pas/c/cpp可执行文件:egfranc.exe输入文件:egfranc.in输出文件:egfranc.out古代埃及人喜欢用分子为1的分数,即使是普通的分数他们也喜欢将它转为若干个分子为1的分数的和。

如2/5,他们习惯表示为:1/3+1/15。

现要求你将输入的一个分子不为1的真分数转为若干个分子为1的不同的分数的和,输出要求按分母由小到大的顺序,并且是分母尽可能的小。

输入两个自然数A、B,分别表示分子和分母,输出相应的埃及分数。

样例:egfranc.in2 5egfranc.out2/5=1/3+1/152.N个因子的最小自然数源文件:minnat.pas/c/cpp可执行文件:minnat.exe输入文件:minnat.in输出文件:minnat.out一个自然数总有若干个因子,如6有4个因子:1,2,3,6。

现要求你对于给定的自然数n(1<n<=10000),求出有n个因子的最小自然数。

输入就一个数n,输出有n个因子的最小自然数。

样例:minnat.in15minnat.out1443.数字拆成K份源文件:numkd.pas/c/cpp可执行文件:numkd.exe输入文件:numkd.in输出文件:numkd.out将一个正整数n拆成k个正整数之和,如n=5,k=2时,不同的拆分方法有两种:5=1+4=2+3。

现要求根据给定的n和k,求出可能的不同拆分的数目。

输入就一行两个数,分别表示n和k(1<n<1000,0<k<=n),输出就一个数字,表示不同的拆分方法数目。

样例:numkd.in5 2numkd.out24、好心的出租车司机源文件:taxi.pas/c/cpp可执行文件:taxi.exe输入文件:taxi.in输出文件:taxi.out题目描述一位出租车司机向你抱怨:城市发展太快,公路越来越多,他已经疲于计算行驶路线,于是求助你开发一个自动导航的工具。

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

NOIP复赛模拟题

NOIP复赛模拟题

模拟题11. 1.分数(mark.cpp)高考分数刚刚公布.共有n人参加考试,为了便于填报志愿,教育部把所有考生的成绩平均分为m档.保证n是m的倍数.考试成绩名次在(k-1)*(n/m)+1名到k*(n/m)名的考生被分在第k档(k=1,2,3…..m).并列第i名的所有考生都算第i名.小Y刚参加完高考,迫切想知道自己被分在第几档,你能帮助他吗?输入格式:第一行两个整数n,m<=1000,保证n是m的倍数.接下来n行,每行一个整数ai表示第i 个考生的成绩.最后一行,一个整数x,1<=x<=n,表示询问第i 个考生被分在哪一档.输出格式:一行一个数,表示被分在哪一档.输入输出样例:mark.in3 36326516243mark.out32. 2.背单词(words.cpp)英语四级考试临近了,小Y却发现他已经把以前学的单词几乎忘光了.好在现在离考试还有一段时间.小Y决定从现在开始夜以继日地背单词,也就是一天24小时地背. 今天的日期(时间)是yyyy年mm月dd日hh时min分.这之间的所有时间小Y都用来背单词了,那么考试之前他最多能背多少个单词呢?时间紧张,小Y只管数量不管质量.当然有的单词长一些,有的单词短一些.长单词难背一些,短的单词好背一些.根据小Y的经验,他能一眼看出背某一个单词需要的时间,以分钟记. 现在给你一个字典,请你挑出最多的单词使小Y能在考前背出来.输入格式:第一行一个整数n,表示字典中的单词数,n<=5000.接下来n行,每行一个整数表示背这个单词需要的时间,以分钟记.小于等于10000,(这个单词本身是什么并不重要)接下来两行依次是当前时间和考试时间.时间给出的格式是:yyyy-mm-dd-min.例如:2010-04-22-02:00,采用24小时制,每天从00:00-23:59.年份从0000到9999.输出格式:一行,一个数,表示考前小Y最多能背出的单词数.输入输出样例:words.in2112007-06-23-11:592007-06-23-12:00words.out13溶液模拟器(simulator.cpp)小Y到网上下载了一个溶液配置模拟器。

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复赛普及组模拟题1

NOIP复赛普及组模拟题1

题目概况1.星图题目描述:天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。

如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的。

比如,在上面的例图中,星星5是3级的(1,2,4在它左下)。

星星2,4是1级的。

例图中有1个0级,2个1级,1个2级,1个3级的星。

给定星星的位置,输出各级星星的数目。

输入文件:第1行一个整数N(1<=N<=15000),表示星星的数目。

接下来N行给出每颗星星的坐标,两个整数X,Y(0<=X,Y<=32000),不会有星星重叠。

星星按Y坐标增序列出,Y坐标相同的按X坐标增序列出。

输出文件:N行,每行一个整数,分别是0级,1级,2级……N-1级的星星的数目。

全国信息学奥林匹克联赛复赛普及组模拟赛SANPLE INPUT:51 15 17 13 35 5SANPLE OUTPUT:12112.电话薄【问题描述】不同的人对自己的电话号码簿有不同的需求。

有人喜欢开门见山,打头就是电话号码;有人喜欢在电话簿的开始几页写上自己的格言;有人喜欢在电话簿上先画上自己的杰作;又比如Black家族的人则喜欢在电话簿的第一页写上自己的格言,第二页是目录,第三页开始是电话记录;而White印象派世家的人喜欢在电话簿的头两页和最后两页都画上自己的杰作,中间几页是电话记录。

PIG电话簿制作中心刚刚收到了一封Jim Black的来信,要求帮他制作一本能让他满意的电话簿。

他已经在信中说明了需要被写入电话簿的N个电话号码,要求制作一本能包含所有电话记录的电话簿。

每条记录有两行,第一行是电话号码,第二行空着留给Jim本人填写,比如写“这是我从小穿着一条开裆裤长大的朋友Tim White”“这是我亲爱的丈母娘”。

而每页的记录数目当然也不能太多,Jim要求最多仅能有2K行。

这个城市的电话号码有仅有4位,主要是因为人口太少了。

而普通家庭的电话打头的不能是0和8,因为这些是都是留给政府作为特殊服务的号码,比如报警电话0110,救护电话0120,声讯服务台8888。

noip普及组复赛入门训练1答案

noip普及组复赛入门训练1答案

noip普及组复赛入门训练1答案PASCAL复习21. 字符统计(文件名ZFTJ.PAS)读入一组字符,以“?”作为结束标志,统计其中元音字母、辅音字母、数字和其它符号个数(“?”作为结束标志,不计算个数)。

如输入字符为SouA56#s?,则输出YY=3,FY=2,SZ=2,QT=1。

输入输出样例:输入:SouA56#sEenTk3&?输出:YY=5,FY=5,SZ=3,QT=2var s1,S2,S3,S4,t:longint;c:char;begin S1:=0;S2:=0;S3:=0;S4:=0;while c<>'?' dobegin read(c);if ((c>='a') and (c<='z')) or ((c>='A') AND (C<='Z')) THENif (c='a') or (c='e') or (c='i') OR (c='o') or (c='u') or(c='A') OR (c='E') OR (c='I') OR (c='O') OR (c='U')THEN S1:=S1+1 ELSE S2:=S2+1ELSEIF (c>='0') and (c<='9') then s3:=s3+1ELSE S4:=S4+1;end;writeln('YY=',S1,'FY=',S2,'SZ=',S3,'QT=',S4-1);END.2.取数(QS.PAS)问题描述:我们来玩一个游戏:自然数1到N,按顺序列成一排,你可以从中取走任意个数,但是相邻的两个不可以同时被取走。

NOIP复赛模拟试题I

NOIP复赛模拟试题I

NOIP 复赛模拟试题(I )1.医院设置(hospital.cpp ) 【问题描述】设有一棵二叉树(如下图,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号。

现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间的距离为1。

就本图而言,若医院建在1处,则距离和=4+12+2*20+2*40=136;若医院建在3处,则距离和=4*2+13+20+40=81…… 【输入格式(hospital.in )】 其中第一行一个整数n ,表示树的结点数(n<=100)。

接下来的n 行每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链接,为0表示无链接;第三个数为右链接,为0表示无链接。

【输出格式(hospital.out )】该文件只有一个整数,表示最小距离和。

【样例输入】 5 13 2 3 4 0 0 12 4 5 20 0 0 40 0 0【样例输出】 812.面积(area.cpp ) 【问题描述】编程计算由“*”号围成的下列图形的面积。

面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。

如右下图所示,在10*10的二维数组中,有“*”围住了15个点,因此面积为15。

在输入中,为了方便起见使用“1”来代替右图中的“*”。

【输入格式(area.in )】输入数据保证仅有一个10*10的01矩阵 【输出格式(area.out )】 一个数,表示面积 【样例输入】0 0 0 0 0 0 0 0 0 00 0 0 0 1 1 1 0 0 00 0 0 0 1 0 0 1 0 00 0 0 0 0 1 0 0 1 00 0 1 0 0 0 1 0 1 00 1 0 1 0 1 0 0 1 00 1 0 0 1 1 0 1 1 00 0 1 0 0 0 0 1 0 00 0 0 1 1 1 1 1 0 00 0 0 0 0 0 0 0 0 0【样例输出】153. 极值问题(number.cpp)【问题描述】已知m、n为整数,且满足下列两个条件:①m、n∈{1,2,…,k},即1≤m,n≤k②(n2-m*n-m2)2=1你的任务是:编程输入正整数k(1≤k≤109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。

第十届NOIP复赛试题及答案

第十届NOIP复赛试题及答案

第十届全国青少年信息学奥林匹克联赛复赛试题及答案一、不高兴的津津(unhappy.pas/dpr/c/cpp)【问题描述】津津上初中了。

妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。

另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。

假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

【输入文件】输入文件unhappy.in包括七行数据,分别表示周一到周日的日程安排。

每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

【输出文件】输出文件unhappy.out包括一行,这一行只包含一个数字。

如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。

如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

【样例输入】5 36 27 25 35 40 40 6【样例输出】3二、花生采摘(peanuts.pas/dpr/c/cpp)【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。

这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。

鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。

在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。

有经验的多多一眼就能看出,每棵花生植株下的花生有多少。

为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。

”我们假定多多在每个单位时间内,可以做下列四件事情中的一件:1) 从路边跳到最靠近路边(即第一行)的某棵花生植株;2) 从一棵植株跳到前后左右与之相邻的另一棵植株;3) 采摘一棵植株下的花生;4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。

NOIP 2012复赛 模拟练习卷(一)

NOIP 2012复赛 模拟练习卷(一)

NOIP 2012复赛模拟练习卷(一)1.序列(sequence.cpp/c/pas)【问题描述】有一个整数序列,它的每个数各不相同,我们不知道它的长度(即序列中的整数个数)是多少,但我们知道,在某些区间中至少有多少个整数,用区间(Li,Ri,Ci)来描述,表示这个整数序列中至少有Ci个数来自区间[Li,Ri]。

给定若干个这样的区间,问这个整数序列的长度最少能为多少?【输入】(sequence.in)第1行:一个正整数N,表示区间个数。

接下来N行:每行三个正整数Li、Ri和Ci,描述一个区间。

【输出】(sequence.out)输出一个数,表示该整数序列的最小长度。

【输入样例】44 5 16 10 37 10 35 6 1【输出样例】4【数据规模】N<=1000, 0<=Li<=Ri<=1000, 1<=Ci<=Ri-Li+12.call (call.cpp/c/pas)【问题描述】有M座房屋排列在一条直线上。

房屋之间会互相打电话,现在,在一些房屋之间安装了监听器,每当两个位于监听器两侧的房屋之间打了电话,监听器就计一次数。

现在知道每个监听器的位置和计数,问总共最少可能打了多少个电话。

【输入】第一行上有两个整数N和M(N<M≤1000000000),N表示监听器个数,M表示房屋数。

接下来N行,每行两个整数P i和C i,表示第i个监听器位于房屋P i和P i+1之间,计数C i次(0≤Ci ≤100000)。

【输出】一行,一个整数,表示最少可能打了多少个电话。

【样例输入一】3 43 12 2【样例输出一】2【样例输入二】2 31 232 17【样例输出二】23【样例输入三】3 97 28 33 4【样例输出三】53.planting (planting.cpp/c/pas)【问题描述】在一个笛卡尔平面坐标系里(X轴向右是正方向,Y轴向上是正方向),有N(1<=N<=10)个矩形,第i个矩形的左上角坐标是(x1,y1),右下角坐标是(x2,y2)。

历年noip普及组复赛试题

历年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),求从起点到终点的路径数。

以上只是一些例子,每年的试题都会涉及不同的知识点和算法,题目难度也会有所不同。

参赛选手需要具备扎实的编程基础和算法
思维,才能在复赛中取得好成绩。

希望以上内容能对你有所帮助。

第十届NOIP复赛试题及答案

第十届NOIP复赛试题及答案

第十届全国青少年信息学奥林匹克联赛复赛试题及答案一、不高兴的津津(unhappy.pas/dpr/c/cpp)【问题描述】津津上初中了。

妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。

另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。

假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

【输入文件】输入文件unhappy.in包括七行数据,分别表示周一到周日的日程安排。

每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

【输出文件】输出文件unhappy.out包括一行,这一行只包含一个数字。

如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。

如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

【样例输入】5 36 27 25 35 40 40 6【样例输出】3二、花生采摘(peanuts.pas/dpr/c/cpp)【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。

这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。

鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。

在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。

有经验的多多一眼就能看出,每棵花生植株下的花生有多少。

为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。

”我们假定多多在每个单位时间内,可以做下列四件事情中的一件:1) 从路边跳到最靠近路边(即第一行)的某棵花生植株;2) 从一棵植株跳到前后左右与之相邻的另一棵植株;3) 采摘一棵植株下的花生;4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。

noip复赛模拟试题

noip复赛模拟试题

noip复赛模拟试题第一题:最大字符(zdzf.c/cpp)读入一串由大写、小写、数字组成的字符(<256位),输出ASCII 表值最大的那个字符出来。

例如:读入:abeADEf3输出:e第二题:盖房子(gfz.c/cpp)题目正文【问题描述】永恒の灵魂最近得到了面积为n*m的一大块土地(高兴ING^_^),他想在这块土地上建造一所房子,这个房子必须是正方形的。

但是,这块土地并非十全十美,上面有很多不平坦的地方(也可以叫瑕疵)。

这些瑕疵十分恶心,以至于根本不能在上面盖一砖一瓦。

他希望找到一块最大的正方形无瑕疵土地来盖房子。

【输入格式】输入文件第一行为两个整数n,m(1<=n,m<=1000),接下来n 行,每行m个数字,用空格隔开。

0表示该块土地有瑕疵,1表示该块土地完好。

【输出格式】一个整数,最大正方形的边长。

【输入样例】4 40 1 1 11 1 1 00 1 1 01 1 0 12第三题:IQ(iq.c/cpp)题目正文【问题描述】根据世界某权威学会的一项调查,学信息学的学生IQ非常高。

举个最好的例子,如果我们把学信息学的一些学生调去学数学,那么两个竞赛的学生平均IQ都会提升!!现在给出一群数学竞赛全体学生的IQ和信息学竞赛全体学生IQ,问最多能把几个学信息学的学生调去学数学,而两个竞赛的学生平均IQ都有提升呢?每次只调一个学生,而且每次调配,两个竞赛的学生平均IQ都要提升。

【输入格式】输入数据的第一行一个正整数N,代表数学竞赛班学生的数目。

N <= 100接下来一行,有N个正整数,代表每个数学学生的IQ(1 到 200 之间)。

然后一个整数M,代表信息学竞赛班学生数目 M <= 100接下来一行,有M一个正整数,代表每个信息学竞赛班学生的IQ (1 到 200 之间)输入数据保证信息学学生平均IQ高于数学学生。

输出格式:输出只有一行,一个正整数,代表能从信息学调去学数学的学生的个数。

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

NOIP 复赛模拟试题(I )
1.医院设置(hospital.cpp ) 【问题描述】
设有一棵二叉树(如下图,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号。

现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间的距离为1。

就本图而言,若医院建在1处,则距离和=4+12+2*20+2*40=136;若医院建在3处,则距离和=4*2+13+20+40=81…… 【输入格式(hospital.in )】 其中第一行一个整数n ,表示树的结点数(n<=100)。

接下来的n 行
每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链
接,为0表示无链接;第三个数为右链接,为0表示无链接。

【输出格式(hospital.out )】
该文件只有一个整数,表示最小距离和。

【样例输入】 5 13 2 3 4 0 0 12 4 5 20 0 0 40 0 0
【样例输出】 81
2.面积(area.cpp ) 【问题描述】
编程计算由“*”号围成的下列图形的面积。

面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。

如右下图所示,在10*10的二维数组中,有“*”围住了15个点,因此面积为15。

在输入中,为了方便起见使用“1”来代替右图中的“*”。

【输入格式(area.in )】
输入数据保证仅有一个10*10的01矩阵 【输出格式(area.out )】 一个数,表示面积 【样例输入】
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 0 1 0
0 1 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1 0
0 0 1 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
【样例输出】
15
3. 极值问题(number.cpp)
【问题描述】
已知m、n为整数,且满足下列两个条件:
①m、n∈{1,2,…,k},即1≤m,n≤k
②(n2-m*n-m2)2=1
你的任务是:编程输入正整数k(1≤k≤109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。

例如,从键盘输入k=1995,则输出:m=987 n=1597。

【输入格式(number.in)】
一个整数k
【输出格式(number.out)】
共两行,分别为“m=….”和“n=….”
【输入样例】
1995
【输出样例】
m=987
n=1597
4、牛的旅行(fun.cpp)
【问题描述】
农民John的农场里有很多牧区。

有的路径连接一些特定的牧区。

一片所有连通的牧区称为一个牧场。

但是就目前而言,你能看到至少有两个牧区不连通。

现在,John想在农场里添加一条路径( 注意,恰好一条)。

对这条路径有这样的限制:一个牧场的直径就是牧场中最远的两个牧区的距离( 本题中所提到的所有距离指的都是最短的距离)。

考虑如下的两个牧场,图1是有5个牧区的牧场,
牧区用“*”表示,路径用直线表示。

每一
个牧区都有自己的坐标:
图1所示的牧场的直径大约是12.07106,
最远的两个牧区是A和E,它们之间的最
短路径是A-B-E。

这两个牧场都在John的
农场上。

John将会在两个牧场中各选一个牧区,然后用一条路径连起来,使得连通后这个新的更大的牧场有最小的直径。

注意,如果两条路径中途相交,我们不认为它们是连通的。

只有两条路径在同一个牧区相交,我们才认为它们是连通的。

现在请你编程找出一条连接两个不同牧场的路径,使得连上这条路径后,这个更大的新牧场有最小的直径。

【输入格式(fun.in)】
第1 行:一个整数N (1 <= N <= 150), 表示牧区数;第 2 到N+1 行:每行两个整数X,Y ( 0 <= X,Y<= 100000 ),表示N个牧区的坐标。

每个牧区的坐标都是不一样的。

第N+2 行到第2*N+1 行:每行包括N个数字( 0或1 ) 表示一个对称邻接矩阵。

例如,题目描述中的两个牧场的矩阵描述如下:
A B C D E F G H
A 0 1 0 0 0 0 0 0
B 1 0 1 1 1 0 0 0
C 0 1 0 0 1 0 0 0
D 0 1 0 0 1 0 0 0
E 0 1 1 1 0 0 0 0
F 0 0 0 0 0 0 1 0
G 0 0 0 0 0 1 0 1
H 0 0 0 0 0 0 1 0
输入数据中至少包括两个不连通的牧区。

【输出格式(fun.out)】
只有一行,包括一个实数,表示所求答案。

数字保留六位小数。

【输入样例】
8
10 10
15 10
20 10
15 15
20 15
30 15
25 10
30 10
01000000
10111000
01001000
01001000
01110000
00000010
00000101
00000010
【输出样例】
22.071068。

相关文档
最新文档