NOIP复赛模拟题
noip普及组复赛模拟试题30
1.验证卡布列克运算。
任意的一个四位数,只要它们各个位上数字不全相同,就有这样的规律:(1)将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大四位数。
(2)将组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小四位数。
(如果四个数字中有0,则得到的数不足四位)(3)求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后得到的结果总是6174,这个数被称为卡布列克数。
请你写一个程序,计算一个四位数经过上述运算最后得到卡布列克数所需的步数。
输入输出样例:输入:9998输出:9998-8999= 9999990-999=89919981-1899=80828820-288=85328532-2358=6174STEP=52.将字符串中的大写字母按照字典序从大到小依次移除。
每次移除一种大写字母,如果这个大写字母出现多次,则一并移除。
字符串长度不超过80,只有大小写字母,没有其他字符(也没有空格)。
例如:输入'theRainInSpainFallsMainlyOnThePlain':theRainInSpainFallsMainlyOnhePlain<--第一次移除所有的TtheRainInpainFallsMainlyOnhePlain <-- 移除所有的StheainInpainFallsMainlyOnhePlain <-- 移除所有的RtheainInpainFallsMainlyOnhelain <-- 移除所有的PtheainInpainFallsMainlynhelain <-- 移除所有的OtheainInpainFallsainlynhelain <-- 移除所有的MtheainnpainFallsainlynhelain <-- 移除所有的Itheainnpainallsainlynhelain <-- 移除所有的F输入:camel.in 一个字符串。
NOIP复赛模拟试卷(三)
NOIP复赛模拟试卷(三)第一题 Game【题目描述】小M在玩一个游戏。
游戏有N轮,每一轮,系统给出两个数X和Y,她的任务是将当前得到的所有X和Y两两配对,将每对X、Y求和,使得最大的和最小。
小M算晕了,于是找你帮忙~【输入格式】输入第一行包含一个整数N(1<=N<=100000)接下来N行,每行两个整数X、Y(1<=X,Y<=100)【输出格式】输出共N行,每行一个整数,对于当前得到的所有X和Y进行配对,输出最大和最小的值。
【样例】game.in32 83 11 4game.out10109【数据范围】对于50%的数据,N<=200;对于100%的数据,N<=100000。
第二题 frog【题目描述】一些瓷砖排成一排,其中站着一只青蛙。
瓷砖有两面,分别为白色和黑色。
青蛙所所在的位置是没有瓷砖的。
比如我们可以用BWFBBW表示瓷砖和青蛙的状态:黑-白-青蛙-黑-黑-白。
青蛙在其中跳来跳去,它可以选择向左或向右跳跃一格(在左边或右边有瓷砖的前提下),这样左边或右边的瓷砖就会滑向原来青蛙所在的位置。
比如上面例子中青蛙向右跳跃一格之后变成:BWBFBW。
另外,青蛙可以选择隔一个瓷砖跳,即跳到它右边的右边或左边的左边(在这些格子里有瓷砖的前提下),然后这些格子里的瓷砖会翻一面跳到青蛙原来所在的位置。
比如BWFBBW中的青蛙越过右边的瓷砖跳到右边的右边的瓷砖,之后变成:BWWBFW。
青蛙想要通过最少的跳跃步数使得任意两个黑瓷砖之间都没有任何白瓷砖。
【输入格式】输入包含一行一个串,表示原始瓷砖和青蛙的状态。
B代表黑瓷砖,W代表白瓷砖,F 代表青蛙。
保证数据中只有一只青蛙。
串不为空且长度不超过100。
【输出格式】输出一行一个整数,表示最少的跳跃步数;如果不能在10步之内完成,输出-1。
【样例】frog.inWWBBFBWfrog.outfrog.inWWFBWBWfrog.out1【数据范围】对于30%的数据,串的长度不超过10;对于100%的数据,串的长度不超过100。
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普及组复赛模拟试题12
1. 【试题描述】:读入二行整数,然后程序要完成如下的操作:第一步将2行数合并在一起,第二步将合并好的数由大到小排序,第三步重新排列,从第一个数起开始编号,然后将奇数号上的数(样例中的13,9,5)从前向后排,偶数号上的数(样例中的12,7,4)从后往前排。
第四步计算,将排好的数,第一个+第二个数的2倍+第三个数的3倍+…第五步:输出计算的结果。
【输入描述】第一行是一个整数n(1≤n≤10),第二行有n个整数,整数范围在1~100之间,数与数之间空格隔开。
第三行是一个整数m(1≤m≤10),第四行有m个整数,整数范围在1~100之间,数与数之间空格隔开。
【输出描述】一个整数(最后计算的结果)。
【输入样例】 412 4 5 9213 7 【输出样例】169【解题提示】样例说明:第一步合并后为:12 4 5 9 13 7第二步上例中的数成为:13 12 9 7 5 4第三步得到:13 9 5 4 7 12第四步计算后为:13+2×9+3×5+4×4+5×7+6×12=169最后输出1692. 求SHLQSH数:问题描述:我们把t1 , t2 (包括t1 , t2 (1<=t1<t2<=10000000))之间的所有数的约数个数和n称为t1 , t2的shlqsh数;问题是给出数据t1 , t2后,求t1 , t2的shlqsh数;输入:输入文件shlqsh.in 仅包含一行,共有两个整数,表示t1 t2 (用空格分开) 输出:输出文件shlqsh.out 仅有一个整数,表示t1 , t2之间的shlqsh数。
输入样例:2 6 输出样例:13样例说明:(说明部分不必输出) 2的约数有1,2 (2个);3的约数有1,3 (2个);4的约数有1,2,4 (3个);5的约数有1,5 (2个);6的约数有1,2,3,6 (4个)。
所以 2 6 的shlqsh数为13 【数据规模】对于50 %的数据,保证有t1,t2<=5000000 对于全部的数据,保证有t1,t2<=100000003. 连线游戏:【问题描述】佳佳最近发明了一个游戏,来考验自命不凡的津津。
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复赛模拟题2
NOIP复赛测试题31、神牛果(cow.cpp)【题目描述】在某次膜拜大会上,一些神牛被要求集体膜拜。
这些神牛被奖励每人吃一些神牛果。
但是,每个神牛的肚量不一样。
为了不显得某些人吃得太多,决定两人一组,使得吃得最多的那组吃得尽量少。
(神牛数为偶数)【输入格式】第一行一个整数 n(<=10000) 。
第二行有 n 个正整数,为给定的一列数字,表示每个神牛能吃多少神牛果。
(数字均小于 1000000000)【输出格式】一个正整数,吃的最多的一组神牛吃的个数的最小值。
【输入样例】41 52 8【输出样例】92、序列1(ones.cpp)【题目描述】输入一个不含因子2和5的整数n,计算在十进制下至少多少个连续的1能被n整除。
【输入格式】第一行为正整数t(<10000);接下来t行,每行一个正整数n(≤10000)。
【输出格式】对于每个数据,输出一个整数m,表示至少连续m个1能被n整除。
【输入样例】239901【输出样例】312【样例说明】111能被3整除,而111111111111能被9901整除。
3、过桥问题(bridge.cpp)【问题描述】现在有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过,所以在桥上不能超车。
另外,由于小桥建造的时间已经很久,所以只能承受有限的重量,记为MAX(吨),即任意时刻在桥上行驶的车辆的总重量不能超过MAX(吨)。
因此,车辆在过桥的时候必须有管理员控制,将这N辆车按初始的顺序分组,每次让一个组过桥,并且只有在一个组中的所有的车辆全部过桥之后才能让下一组车辆上桥,而每组车的过桥时间由该组中速度最慢的那辆车决定。
现在,给出每辆车的重量和最大速度,编程将这N辆车分组,使得全部车辆通过小桥的时间最短。
【输入格式】第一行有3个数,分别为MAX(吨)、Len(桥的长度,单位:Km)和N(以空格隔开);接下来有N行,每行有两个数,分别表示每辆车的重量Ti(吨)和最大速度Vi(Km/h)。
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复赛模拟练习5(答案)
noip复赛模拟练习5(答案)⼩⽩的名次题⽬描述兔⼦⼩⽩是位数学爱好者,有⼀次它参加了兔界⾥的数学⽐赛,成绩公布后,⼩⽩很想知道⾃⼰的成绩到底排第⼏,现在请你帮它编⼀个程序,要求输⼊⼀个成绩,就能知道相应的名次。
注意:同分的按相同名次算,且只算⼀次。
输⼊输⼊共三⾏。
第⼀⾏:⼀个整数n(n<=30000)第⼆⾏:n个正整数(这些数不⼤于1000)。
第三⾏:⼀个整数,需要查询的分数。
输出输出共⼀⾏。
⼀个整数,查询成绩的名次。
样例输⼊730 50 80 60 20 50 6050样例输出3var a:array[0..1000] of integer;i,n ,x,y,s,max:integer;beginreadln(n);for i:=1 to 1000 do a[i]:=-1;max:=0;for i:=1 to n dobeginread(x);if x>max then max:=x;a[x]:=1;end;read(y);i:=max;while (a[i]<>y) and (i>y) dobegin dec(i); if a[i]=1 then inc(s); end;writeln(s+1);end.⼩s同学出去旅游啦~,⼩s同学住的宾馆每天早上都会提供丰盛的⾃助早餐,⼩s同学最爱吃的就是现烤的切⽚⾯包。
但是呢,宾馆的烤⾯包机很差,虽然说每次最多可以同时烤k块⾯包,但是只能烤好这些⾯包的⼀个⾯。
⼩s要想吃上好吃的⾯包,就需要把⾯包的两⾯都烤好。
⼩s同学⼀共想吃n块烤⾯包,但是⼩s每天都有好多景点需要游览,她不能在早餐上耽误很长时间,因此,⼩s同学希望你能告诉她最少需要使⽤⼏次烤⾯包机就可以烤好n块⾯包。
输⼊输⼊数据仅有⼀⾏包含两个⽤空格隔开的正整数n和k(n, k<=10),n表⽰⼩s同学⼀共要烤n块⾯包,k表⽰宾馆的烤⾯包机⼀次最多可以同时烤好k块⾯包的⼀个⾯。
noip普及组复赛模拟试题6
1.计算机发明之前,数学家们需要手工进行数学计算。
遇到复杂计算往往要花去大量时间,而且正确率也不高。
现在可不一样了,有了计算机人们能快速而正确地求解数学问题。
小雪是个中学生,可已经能熟练的运用计算机编写程序了。
为了提高自己的计算机水平,小学经常将数学老师布置的题目用计算机加以求解。
有一次,数学老师提出这样一个问题:对于给定的一对自然数m 与n )(n m 在m 与n 之间(包含m 和n )有多少素数呢?小雪很快得出了答案。
现在请你也编写程序实现。
(1不为素数)输入:文件的第一行为一个数k ,表示有k 对自然数。
以后k 行每行有两个自然数,第一个自然数为m ,第二个自然数为n 。
输出:依次输出每一对数之间的素数个数。
每个结果占一行。
例如:输入:21 510 20输出:342.当前有面值分别为a 分,b 分,c 分,d 分(a>b>c>d)的硬币,请给出找n 分钱的最佳方案(要求找出的硬币数目最少)输入:a,b,c,d,n输出:硬币各几个例:输入:25 10 5 1 36输出:25 10 5 11 1 0 1又例:输入:10 8 5 1 13输出: 10 8 5 10 1 1 03.在下面的算式中每个“#”都表示一个素数数字。
###* ###—————#####请编写程序确定这些数字,输出所有的解。
注意:ABC*DEF 与DEF*ABC 为同一种解的两种不同形式。
请不要将同一组解以不同形式多次输出。
屏幕输出:依次打印输出每一种解。
每行表示一种解,格式为:###*### = ##### 4.一个整数被称为“怪数”,它至少有两对因数,并且其中有一对因数的差等于另一对因数的和。
例如:6是怪数,因为6 × 1 = 6, 2 × 3 = 6, 6 - 1 = 2 + 3;24也是怪数,因为12 - 2 = 6 + 4。
编程输入A和B表示的整数区间(1 ≤ A ≤ B ≤ 32767),输出该区间的所有怪数,一行一个,若没有输出为空。
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复赛普及组模拟题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普及组复赛模拟试题14(附答案)
解的个数(count)给定一个正整数K,问有多少和正整数X,Y满足X>=Y且1/K=1/X+1/Y,将所有解按X降序输出。
输入第一行一个数T,表示数据组数以下T行,每行一个数K输出T部分,每部分第一行一个数K,以下一次按X降序输出所有解,个数见样例,注意=+两边都有空格。
样例输入2212样例输出21/2 = 1/6 + 1/31/2 = 1/4 + 1/481/12 = 1/156 + 1/131/12 = 1/84 + 1/141/12 = 1/60 + 1/151/12 = 1/48 + 1/161/12 = 1/36 + 1/181/12 = 1/30 + 1/201/12 = 1/28 + 1/211/12 = 1/24 + 1/24数据规模30% K<=20100% K<=10000,T<=10标程:var t,i,j,l,n,k:integer;a:array[1..20] of integer;b,c:array[1..10000] of longint;procedure shou(n:integer);var k,s:longint;begink:=n+1;s:=n*2;l:=0;for i:=k to s dobeginif n*i mod (i-n)=0 thenbegininc(l);b[l]:=(n*i) div (i-n);c[l]:=i;end;end;end;beginassign(input,'count.in');reset(input);assign(output,'count.out'); rewrite(output);readln(t);for i:=1 to t doreadln(a[i]);for k:=1 to t dobeginshou(a[k]);writeln(l);for j:=1 to l dowriteln(1,'/',a[k],' ','=',' ',1,'/',b[j],' ','+',' ',1,'/',c[j]);end;close(input);close(output);end.输入341532输出31/4 = 1/20 + 1/51/4 = 1/12 + 1/61/4 = 1/8 + 1/851/15 = 1/240 + 1/161/15 = 1/90 + 1/181/15 = 1/60 + 1/201/15 = 1/40 + 1/241/15 = 1/30 + 1/3061/32 = 1/1056 + 1/331/32 = 1/544 + 1/341/32 = 1/288 + 1/361/32 = 1/160 + 1/401/32 = 1/96 + 1/481/32 = 1/64 + 1/64不等数列(num.cpp/c/pas)【题目描述】将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。
NOIP复赛普及组模拟题8
1.句子的第一个字母用了小写。 2.不是单词的第一个字母用了大写。 一个单词是字母的序列,不包含其他任何字符,或行尾结束符用句号,问号 或叹号表示句子的结束。
全国信息学奥林匹克联赛复赛
普及组
模拟赛
题目名称 程序名称 输入输出 时间限制 空间限制
跑步 run.pas In/out 1S 128MB
拼写检查 spell.pas In/out 1S 128MB
魅力俱乐部 难解的问题
club.pas
problem.pas
In/out
In/out
1S
1S
128MB
【输入】 输入为文字包含大小写字母(A-Z,a 一 z)、标点符号(.!?)、空格。文字长 度不超过 10000 【输出】 输出文字中错误的数量 【样例输入】
This sentence iz correkt! -It Hasቤተ መጻሕፍቲ ባይዱNo mista;.Kes et oll. But there are two BIG mistakes in this one! and here is one more. [样例输出] 3
4.难解的问题 【描述】 在你的帮助下,蔚蓝来到了埃及,在金字塔里,蔚蓝看到了一个问题,传说,能 回答出这个 问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮 帮他么? 问题是这 样的:
给定一个序列<a1,a2,...,an>.求最长上升子序列(lis)p1<p2<...<pw 满足 a[p1]<a[p2]<...<a[pw], 例如 65 158 170 299 300 155 207 389 LIS=<65,158,170,299,300,389>。 但是,现在还有一个附加条件:求出的最长上升子序列必须含有第 K 项。比如, 在上面的例子中, 要求求出的最长上升子序列必须含有第 6 项,那么最长上升子序列就是:65 155 207 389。 【输入格式】 第一行是用空格隔开的两个正整数 N、K,含义同上所述. 第二行 N 个数,即给出的序列. 【输出格式】 仅有一个数,表示含有第 K 项的最长上升子序列的长度. 【时间限制】 各个测试点 1s 【注释】 对于 60%的数据,N<=10000; 对于 100%的数据,1<=n<=300000 ,1<=k<=n,序列的每一个数为小于 2^31-1 的非 负整数. 【样例输入】 53 12321 【样例输出】 3
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普及组复赛模拟试题26
1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。
新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
【输入】输入文件名为reverse.in。
输入共 1 行,一个整数N。
【输出】输出文件名为reverse.out。
输出共 1 行,一个整数,表示反转后的新数。
【输入输出样例1】reverse.in reverse.out123 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.outToto be or not to be is a question2 0【输入输出样例 1 说明】输出结果表示给定的单词To 在文章中出现两次,第一次出现的位置为0。
NOIP普及组复赛模拟试题(一)
NOIP普及组复赛模拟试题一PROBLEM 1:二进制字典排序字符串(Filename:Seq.pas Inputfile:seq.in Outputfile:seq.out)[题目描述]假设字符串的长度为N (0 < N < 44), 仅由0与1组成,没有二个1是相邻的。
110就不是一个合法的,0101就是一个合法的四位的字符串,将它们按字典顺序排列下来,请问第K个(0 < K < 1000000000)字符串是哪一个,如果K的值超过的N位字符串的总个数,就输出-1。
[Input]一行包含两个正整数N 和 K。
[Output]相应的字符串或-1。
Sampleinput Output3 1 000PROBLEM 2: 非琐碎数(Filename:Trivial.pas Inputfile:trivial.in Outputfile:trivial.out)[题目描述]规定正整数的琐碎度为它的除了自身以外的所有约数的和除以它自己的值。
如10的琐碎度为0.8=(1+2+5)/10, 20的琐碎度为1.1 = (1 + 2 + 4 + 5 + 10) / 20。
给你两个数 0 < I <= J < 1000000,找出满足 I <= N <= J 的 N,使 N 是琐碎度最小的整数。
[Input]两个数 I 和J, 0 < I ≤ J ≤ 1000000。
[Output]输出N。
Sampleinput output24 28 25PROBLEM 3:石头分堆(Filename:Stone.pas Inputfile:stone.in Outputfile:stone.out)[题目描述]你有一堆石头,重量为w[1],w[2]..w[n]。
把他们分成两堆,使两堆重量的差最小。
[Input]第一个数n(1<=n<=20)石头的个数。
接下来n个数W1…Wn(1<=Wi<=100000)石头的重量。
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高于数学学生。
输出格式:输出只有一行,一个正整数,代表能从信息学调去学数学的学生的个数。
noip普及组复赛模拟试题34(附答案)
1.近来见习魔法师们在进行一项有关二进制数的研究,研究涉及的一个统计问题令他们大伤脑筋。
问题是这样的:若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。
例如:(13)10=(1101)2其中1的个数为3,0的个数为1,则称此数为A类数;(10)10=(1010)2其中1的个数为2,0的个数也为2,称此数为B类数;(24)10=(11000)2其中1的个数为2,0的个数为3,则称此数为B类数;程序要求:求出X~Y之中,全部A、B两类数的个数。
样例输入10 20 输出 5 6Var X,Y,i,j,la,lb:longint;procedure ze(m:longint);var l0,l1:longint;begin l0:=0;l1:=0;while m<>0 dobegin if m mod 2=0 then l0:=l0+1 else l1:=l1+1;m:=m div 2;end;if l1>l0 then j:=1 else j:=0;end;begin la:=0;lb:=0; readln(x,y);for i:=x to y dobegin ze(i); if j=1 then la:=la+1 else if j=0 then lb:=lb+1;end;writeln(la);writeln(lb);end.输入50 100 输出28 23 输入200 400 输出110 91输入1000 2000输出615 386 输入40000 50000 输出4818 5183老师给笑笑布置了一份作业,笑笑不知如何解决。
老师给了一串很长的数列,要求从中找出连续的一段来使的总和最大。
【输入文件】:第一行包含一个整数n,表示数列的长度。
(n<=100000)第二行包含n个整数来描述这个数列,每个整数的的绝对值不超过1000。
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分钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟题1
1. 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.in
3 3
632
651
624
3
mark.out
3
2. 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.in
2
1
1
2007-06-23-11:59
2007-06-23-12:00
words.out
1
3溶液模拟器(simulator.cpp)
小Y到网上下载了一个溶液配置模拟器。
溶液配置模拟器是这样的程序:模拟器在电脑中构造一种虚拟溶液,然后你可以虚拟地向当前虚拟溶液中加入一定浓度一定质量的这种
溶液,模拟器会很快地算出倒入后虚拟溶液的浓度和质量。
当然,计算机最可爱的地方就是当你倒错了可以撤消。
溶液配置模拟器的使用步骤是这样的:
①为模拟器设置一个初始质量和浓度v0,c0(0<=c0<=100);
②进行一系列操作,溶液配置模拟器支持两种操作:
P(v,c)操作:表示向当前的虚拟溶液中加入质量为v,浓度为c的溶液;
Z操作:表示撤消上一步P操作。
但是小Y不小心把模拟器弄丢了,眼看论文答辩迫在眉睫,只能依靠你了。
输入格式:
第一行,两个整数v0,c0
第二行,一个整数n,表示操作数(n<=10000)接下来n行,每行一条操作,格式为:P_v_c或Z.其中_代表一个空格,当只剩初始溶液的时候,再撤消就没有用了。
任意时刻质量不会超过2n-1
输出格式:
N行,每行两个数vi,ci,其中vi为整数,ci为实数(保留5位小数),之间用一个空格隔开,其中第i行表示第i次操作以后的溶液质量和浓度。
输入输出样例:
simulator.in
100 100
2
P 100 0
Z
Simulator.out
200 50.00000
100 1000.00000。