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

题目概况1.sub题目描述: A 和B 是两个字符串,它们的长度分别是n 和m 。
如果存在一个序列:使得我们则认为B 是A 的一个子序列,其中空串为任意串的子序列。
现在我们定义一个字符串操作,B i 表示把B 串的每个字母重复i 次,举个例子:特别的:(空集)你的任务是,已知两个由小写字母组成的字符串X 和Y ,求一个最大的k ,使得X k 是串Y 的一个子序列。
输入格式:本是包含多组数据,输入的第一行为一个数字Test ,表示数据组数。
接下来,每组数据包含两行输入,每一行为一个非空字符串X ,第二行为一个非空字符串Y 。
全国信息学奥林匹克联赛复赛普及组模拟赛输出格式:输出包含Test行,每行一个数字,表示该组数据的答案。
输入样例:3abcaabbccabcbbcccabcdefabc输出样例:2数据规模及约定:2.lucky题目描述:蓝胖是个热爱数学的人,在他心目中每个数位都由2,3,5,7组成的数字是他的幸运数字,而幸运数列是将所有幸运数字排序后得到的递增数列:蓝胖想知道这个数列中的第n个数字是多少,这个任务现在就交给你了。
输入格式:本题包含多组数据,输入第一行为一个数Test,表示数据组数。
接下来每组数据包含一个数字n,表示蓝胖的一个询问。
输出格式:输出包含Test行,每行一个数字,表示该组数据的答案。
输入样例:4131018输出样例:253373数据规模及约定:3.接力赛跑N (1 <= N <= 1,000)只奶牛(编号为1..N)在进行一个特别的接力赛跑。
这个赛跑中,奶牛能同时跑。
在t=0时刻,每只奶牛在起点线处等待自己起跑的时间。
奶牛们会在一个圆形跑道上跑,终点线跟起点线重合。
在t=0时刻,牛1开始沿着跑道跑,L_1秒后跑完一圈重新到达起点线。
一般来说,牛i跑完一圈需要的时间为L_i (1 <= L_i <= 1,000)秒。
当她重新越过起点线的瞬间,她示意M_1只其它的奶牛立刻起袍。
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普及组复赛入门测试(答案+测试数据)

一、新龟兔赛跑(文件名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普及组复赛模拟试题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普及组复赛模拟试题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普及组复赛模拟试题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年美国奥斯卡最佳影片,影片的主人公是一个叫贾马尔的小男孩,他在贫民窟长大,后来他参加了一档印度版的《谁想成为百万富翁》电视直播节目,他的特殊成长经历居然使他能够回答这个节目中的每一个问题,最后成功获得百万奖金。
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普及组复赛模拟试题23

281. 小华的寒假作业上,有这样一个趣味填空题:给出用等号连接的两个整数,如“1234=127”。
当然,现在这个等号是不成立的。
题目让你在左边的整数中间某个位置插入一个加号,看有没有可能让等号成立。
以上面的式子为例,如果写成123+4=127,这就可以了。
请你编写一个程序来解决它。
Input 只有那个不相等的式子。
已知,等号两边的整数都不会超过2000000000。
Output 如果存在这样的方案,请输出那个正确的式子。
如果不存在解决方案,请输出“Impossible!”(引号中的部分)。
Sample Input 1234=127Sample Output 123+4=1272. 给若干个字符串,判断该字符串最多重复了几次,比如,给ababab,结果是3,因为ab重复了3次,因为求最多重复了几次,所以结果不是1,在比如abcdabcd 结果是2,abcd结果是1.输入一组字符串,以“。
作为结束标志。
样例输入1aaaaabcd。
样例输出413. 【题目描述】蚊子最近经常做噩梦,然后就会被吓醒。
这可不好。
疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事。
如果那些事出现在她的梦里,就会害怕。
我们可以假定那个害怕的事其实是一个字符串。
而她做的梦其实也是一个字符串。
她可以一个晚上一直做梦,所以梦这个字符串会很长,如果其中包含了她所害怕的事情,那么她这天晚上就会害怕。
当然一个害怕的事也可能在这天晚上被她梦到很多遍,当然每个晚上也可能有很多种害怕的事都被梦到。
每个害怕的事都有一定的权值。
而这天晚上如果梦到了某件事,那么这件事所产生的黑暗效果等于这件事的权值乘以这个害怕的事在梦字符串里的开始位置。
如果同样的事梦到了很多遍,那么就重复上面的操作很多遍。
当天晚上的黑暗效果总和等于当天所有害怕的事产生的黑暗效果累加到一起。
现在疯子想知道蚊子这些天来噩梦的黑暗效果总和是多少。
【输入格式】:第1行两个整数N,M代表一共有N天梦和M个害怕的事。
信奥赛普及组复赛试卷

信奥赛普及组复赛试卷一、单项选择题(每题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普及组复赛模拟试题一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普及组复赛试题
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普及组复赛模拟试题20

1.环绕大厅有七盏电灯A,B,C,D,E,F,G,各自装有一个拉线开关,开始时只有A,C,E,G四盏灯亮着.一个小孩从A灯开始顺次拉一下开关,问当他拉了N (N>1000)次开关后,最后有哪几盏灯是亮着的?输入:N=1100输出a b d f输入:N=1200输出a c d f2.年龄计算。
根据我国的户籍管理方法,每个人一出生就会由户籍所在地编排一个18 位的身份证号码,每一个身份证号码都是按规律编排的,例如:440862************ 前6 位数字440682 表示户籍所在地,2001 表示该号码拥有者的出生年份1106 表示出生月份和日期,602X 是识别码。
现在要求编写一个程序,输入一个身份证号码(假设输入的号码完全正确),计算该号码拥有者,在2009年11 月25 日应该是多少岁月。
生日在11 月25 日后不算足岁,如1974 年11 月25 日出生的应为32 岁,1974年11 月26 日出生的应为31 岁。
输入格式(nianling.in):输入文件只有一行,即18 位的身份证号码。
输出格式(nianling.out):输出岁数。
输入输出样例:输入1:220682************ 输出1:32输入2:770322199512286069 输出2:103.输入一段字符,倒序输出,并统计其中四则运算符的个数,如输入(a+b-c*d=3),则输出)3=d*c-b+a(,GS=3。
4.由键盘输入一个高精度的正整数N(N≤240),去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数。
对给定的N和S,寻找一种方案,使得剩下的数字组成的新数最小。
输入格式:NS输出格式:最后剩下的最小数。
样例:输入1785344输出135.输入一个长度为N的数字串,要求你删掉其中的K个数字,使得剩下的数最大。
例如:数字串为5123,K=1时,如果删掉的数字分别是5、1、2、3,则剩下的数分别为123、523、513、512,其中523是最大的。
NOIP复赛普及组模拟题6

全国信息学奥林匹克联赛复赛普及组模拟赛题目概况1.物理考试【题目描述】高中物理老师总认为给学生文本形式的问题比给纯计算形式的问题要求更高。
毕竟,学生首先得阅读和理解问题。
因此,他们描述一个问题不像”U=10V,I=5A,P=?”,而是”有一个含有U=10V的电池组和灯泡的电路。
现在有I=5A的电流通过灯泡,问灯泡产生的功率是多少?”然而,大多数学生并不在乎题目文本。
他们只是从文本中提取出:U=10V,I=5A。
然后他们想:”我知道哪个公式呢?哦,对了,P=U*I。
因此P=10V*5A=500W。
搞定。
”现在,我们只考虑一个P-U-I类型的问题。
即功率,电压和电流中的两个告诉你,你要求剩下那个。
你的任务是写一个程序,从输入文件中读入一些文本问题,然后要你计算剩下那个的值。
【输入文件】第一行为一个正整数,表示数据组数。
每组数据包含一行,为一个包含两个数据区和一些任意单词的字符串。
一个数据区具有如下形式:I=xA,U=xV或P=xW,x是一个实数。
在A,V,W之前有可能出现前缀m(毫,千分之一),k(千),M(兆,百万)。
以下是几点关于输入的说明:●等号(…=‟)只会在数据区出现,不会在其他地方出现;●数据区内没有空格字符;●P和U,P和I,或U和I中的一个会给出;【输出文件】对于每组数据输出一行,形式如:P=xW,I=xA或U=xV(取决于输入数据),x为一个实数,保留两位小数。
在A,V,W前不要出现前缀。
【样例输入】3If the voltage is U=200V and the current is I=4.5A, which power is generated?A light-bulb yields P=100W and the voltage is U=220V. Compute the current, please.bla bla bla lightning strike I=2A bla bla bla P=2.5MW bla bla voltage?【样例输出】P=900.00WI=0.45AU=1250000.00V【数据规模】对于100%的数据,文本问题长度不超过255,且数据组数不超过3组;2.欧元【题目描述】你每天会收到一些euro,可能正也可能负,银行允许你在某天将手头所有的euro兑换成lei。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Noip2009模拟题
命题人:华南师范大学附属中学罗穗骞
时间:2009年7月17日
题目一览
开灯(light.pas/c/cpp)
【题目描述】
在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,……。
每一盏灯只有两种可能的状态,开或者关。
如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。
如果原来是开,将变成关。
如果原来是关,将变成开。
在刚开始的时候,所有的灯都是关的。
小明每次可以进行如下的操作:
指定两个数,a,t(a为实数,t为正整数)。
将编号为[a],[2*a],
[3*a],……,[t*a]的灯的开关各按一次。
其中[k]表示实数k的整数部分。
在小明进行了n次操作后,小明突然发现,这个时候只有一盏灯是开的,小明很想知道这盏灯的编号,可是这盏灯离小明太远了,小明看不清编号是多少。
幸好,小明还记得之前的n次操作。
于是小明找到了你,你能帮他计算出这盏开着的灯的编号吗?
【输入格式】
第一行一个正整数n,表示n次操作。
接下来有n行,每行两个数,ai,ti。
其中ai是实数,小数点后一定有6位,ti是正整数。
【输出格式】
仅一个正整数,那盏开着的灯的编号。
【输入样例】
3
1.618034 13
2.618034 7
1.000000 21
【输出样例】
20
【数据规模】
记T=t1+t2+t3+……+tn。
对于30%的数据,满足T<=1000
对于80%的数据,满足T<=200000
对于100%的数据,满足T<=2000000
对于100%的数据,满足n<=5000,1<=ai<1000,1<=ti<=T
数据保证,在经过n次操作后,有且只有一盏灯是开的,不必判错。
打砖块(game.pas/c/cpp)
【题目描述】
小红很喜欢玩一个叫打砖块的游戏,这个游戏的规则如下:
在刚开始的时候,有n行*m列的砖块,小红有k发子弹。
小红每次可以用一发子弹,打碎某一列当前处于这一列最下面的那块砖,并且得到相应的得分。
如图所示:
某些砖块在打碎以后,还可能将得到一发子弹的奖励。
最后当所有的砖块都打碎了,或者小红没有子弹了,游戏结束。
小红在游戏开始之前,就已经知道每一块砖在打碎以后的得分,并且知道能不能得到一发奖励的子弹。
小红想知道在这次游戏中她可能的最大得分,可是这个问题对于她来说太难了,你能帮帮她吗?
【输入格式】
第一行有3个正整数,n,m,k。
表示开始的时候,有n行*m列的砖块,小红有k发子弹。
接下来有n行,每行的格式如下:
f1 c1 f2 c2 f3 c3 …… fm cm
其中fi为正整数,表示这一行的第i列的砖,在打碎以后的得分。
ci为一个字符,只有两种可能,Y或者N。
Y表示有一发奖励的子弹,N表示没有。
所有的数与字符之间用一个空格隔开,行末没有多余的空格。
【输出格式】
仅一个正整数,表示最大的得分。
【输入样例】
3 4 2
9 N 5 N 1 N 8 N
5 N 5 Y 5 N 5 N
6 N 2 N 4 N 3 N
【输出样例】
13
【数据规模】
对于20%的数据,满足1<=n,m<=5,1<=k<=10,所有的字符c都为N
对于50%的数据,满足1<=n,m<=200,1<=k<=200,所有的字符c都为N 对于100%的数据,满足1<=n,m<=200,1<=k<=200,字符c可能为Y
对于100%的数据,所有的f值满足1<=f<=10000
长方形(rectangle.pas/c/cpp)
【题目描述】
小明今天突发奇想,想从一张用过的纸中剪出一个长方形。
为了简化问题,小明做如下的规定:
(1)这张纸的长度、宽度分别为n,m。
小明将这张纸看成是由n*m个格子组成,在剪的时候,只能沿着格子的边缘剪。
(2)这张纸有些地方小明以前在上面画过,剪出来的长方形不能含有以前画过的地方。
(3)剪出来的长方形的大小没有限制。
小明看着这张纸,想到了好多好多种剪的方法,可是到底有多少种呢?小明数不过来了,你能帮帮他吗?
【输入格式】
第一行两个正整数,n,m,表示这张纸的长度和宽度。
接下来有n行,每行m个字符,每个字符为‘*’或者‘.’。
字符‘*’表示以前在这个格子上画过,字符‘.’表示以前在这个格子上没有画过。
【输出格式】
仅一个整数,表示方案数。
【输入样例】
6 4
....
.***
.*..
.***
...*
.***
【输出样例】
38
【数据规模】
对于10%的数据,满足1<=n<=10,1<=m<=10
对于30%的数据,满足1<=n<=50,1<=m<=50
对于60%的数据,满足1<=n<=200,1<=m<=200
对于100%的数据,满足1<=n<=1000,1<=m<=1000
最后一个点所有的字符都为‘.’。
收费站(cost.pas/c/cpp)
【题目描述】
在某个遥远的国家里,有n个城市。
编号为1,2,3,……,n。
这个国家的政府修建了m条双向的公路。
每条公路连接着两个城市。
沿着某条公路,开车从一个城市到另一个城市,需要花费一定的汽油。
开车每经过一个城市,都会被收取一定的费用(包括起点和终点城市)。
所有的收费站都在城市中,在城市间的公路上没有任何的收费站。
小红现在要开车从城市u到城市v(1<=u,v<=n)。
她的车最多可以装下s升的汽油。
在出发的时候,车的油箱是满的,并且她在路上不想加油。
在路上,每经过一个城市,她要交一定的费用。
如果她某次交的费用比较多,她的心情就会变得很糟。
所以她想知道,在她能到达目的地的前提下,她交的费用中最多的一次最少是多少。
这个问题对于她来说太难了,于是她找到了聪明的你,你能帮帮她吗?
【输入格式】
第一行5个正整数,n,m,u,v,s。
分别表示有n个城市,m条公路,从城市u到城市v,车的油箱的容量为s升。
接下来有n行,每行1个正整数,fi。
表示经过城市i,需要交费fi元。
再接下来有m行,每行3个正整数,ai,bi,ci(1<=ai,bi<=n)。
表示城市ai和城市bi之间有一条公路,如果从城市ai到城市bi,或者从城市bi到城市ai,需要用ci升汽油。
【输出格式】
仅一个整数,表示小红交费最多的一次的最小值。
如果她无法到达城市v,输出-1。
【输入样例1】
4 4 2 3 8
8
5
6
10
2 1 2
2 4 1
1 3 4
3 4 3
【输出样例1】
8
【输入样例2】
4 4 2 3 3
8
5
6
10
2 1 2
2 4 1
1 3 4
3 4 3
【输出样例2】
-1
【数据规模】
对于60%的数据,满足n<=200,m<=10000,s<=200
对于100%的数据,满足n<=10000,m<=50000,s<=1000000000
对于100%的数据,满足ci<=1000000000,fi<=1000000000,可能有两条边连接着相同的城市。