
NOIP复赛模拟试卷(三).docx
5页本文格式为Word版,下载可任意编辑NOIP复赛模拟试卷(三) NOIP复赛模拟试卷(三) 题目名称 game frog date roman 输入文件 game.in frog.in date.in roman.in 输出文件 game.out frog.out date.out roman.out 内存限制 64M 64M 64M 64M 时限 1s 1s 1s 1s 第一题 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.in 3 2 8 3 1 1 4 game.out 10 10 9 【数据范围】 对于50%的数据,N<=200; 对于100%的数据,N<=100000。
其次题 frog 【题目描述】 一些瓷砖排成一排,其中站着一只青蛙瓷砖有两面,分别为白色和黑色青蛙所所在的位置是没有瓷砖的譬如我们可以用BWFBBW表示瓷砖和青蛙的状态:黑-白-青蛙-黑-黑-白 1 青蛙在其中跳来跳去,它可以选择向左或向右腾跃一格(在左边或右边有瓷砖的前提下),这样左边或右边的瓷砖就会滑向原来青蛙所在的位置譬如上面例子中青蛙向右腾跃一格之后变成:BWBFBW另外,青蛙可以选择隔一个瓷砖跳,即跳到它右边的右边或左边的左边(在这些格子里有瓷砖的前提下),然后这些格子里的瓷砖会翻一面跳到青蛙原来所在的位置譬如BWFBBW中的青蛙越过右边的瓷砖跳到右边的右边的瓷砖,之后变成:BWWBFW 青蛙想要通过最少的腾跃步数使得任意两个黑瓷砖之间都没有任何白瓷砖 【输入格式】 输入包含一行一个串,表示原始瓷砖和青蛙的状态B代表黑瓷砖,W代表白瓷砖,F代表青蛙保证数据中只有一只青蛙串不为空且长度不超过100 【输出格式】 输出一行一个整数,表示最少的腾跃步数;假设不能在10步之内完成,输出-1 【样例】 frog.in WWBBFBW frog.out 0 frog.in WWFBWBW frog.out 1 【数据范围】 对于30%的数据,串的长度不超过10; 对于100%的数据,串的长度不超过100。
第三题 date 【题目描述】 M想要去寄信,她梦想信可以在一周内送到,就到邮局去问哪天可以送到她记录了两个日期:寄信日期和收到日期,分别是D1和D2但是M有点莽撞,可能把两个日期记反了(也就是说,可能收到日期是D1而寄信日期是D2)另外,M有点懒,她只记了D1的年份而没有记D2的年份,譬如:假设D2是09/20/2022,她就只写了09/20,由于假设可以在一周内送到的话,D1和D2并没有相隔很远 现在给你D1和D2,计算它们相差的天数是多少,是否在一周内 【输入格式】 输入第一行为一个数字T,表示数据的组数1<=T<=10) 接下来T行,每行有两个日期D1和D2(用空格隔开),D1的格式为M/D/Y,分别表示月/日/年,D2的格式为M/D,保证全体数据都是合法的2000<=Y<=2200) 【输出格式】 对于每个数据,按照下面的格式输出一行,表示D2在D1之前几天或之后几天: 输出格式 条件 M/D/Y IS N DAY(S) PRIOR 假设D2在D1之前7天之内 2 M/D/Y IS N DAY(S) AFTER 假设D2在D1之后7天之内 SAME DAY OUT OF RANGE 假设D1和D2是同一天 假设D1和D2相差超过7天 留神:输出的M/D/Y是D2的日期,也就是说,假设D2和D1相差不超过7天,务必输出D2的月/日/年,即:你务必算出D2的年份。
另外,十二个月的天数分别为:1、3、5、7、8、10、12月为31天,4、6、9、11月为30天,2月在闰年为29天,平年为28天一个年份Y是闰年的条件为:Y能被4整数;但假设Y能被100整除的话,它还务必被400整除例如:2000年、2104年为闰年,而2100年、2022年不是闰年 【样例】 date.in 5 11/20/2022 11/21 11/20/2022 11/20 11/20/2022 11/13 11/20/2022 11/28 1/2/2022 12/30 date.out 11/21/2022 IS 1 DAY AFTER SAME DAY 11/13/2022 IS 7 DAYS PRIOR OUT OF RANGE 12/30/2022 IS 3 DAYS PRIOR 第四题 roman 【题目描述】 在罗马数字中,1,2,3,4,5,6,7,8,9 写成 'I','II','III','IV','V','VI','VII','VIII','IX'10,20,30,40,50,60,70,80,90 写成 'X','XX','XXX','XL','L','LX','LXX','LXXX','XC'。
对于一个小于100的罗马数,可以分别写出它的个位数字和十位数字,然后拼接在一起例如48可以写成XLVIII 现在给出一个小于100的罗马数,要求重新排列这个数中的字母,得到一个最小的罗马数 【输入格式】 输入仅一行,一个字符串,表示一个罗马数 【输出格式】 输出仅一行,一个字符串,表示所得到的最小的罗马数 【样例一】 【样例二】 roman.in roman.in VII VI roman.out roman.out VII IV 3 — 5 —。
