noip普及组复赛答案
- 格式:docx
- 大小:15.59 KB
- 文档页数:16
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米高度自由下落,落地后反弹起,又落地,又弹起,??。
每次弹起的高度都是上一次高度的一半。
求小球第n次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入n,输出反弹高度和经过路程,结果保留两位小数。
输入输出示例:输入:2输出:25.00225.00var n,b:integer;s,h:real;begin readln(n);h:=100;for b:=1 to n do begins:=s+h;h:=h/2;s:=s+h;end;writeln(h:0:2);writeln(s:0:2);end.三、商品编码(文件名:spbm.pas)某种商品编码是一个由13位数字组成的可识别的编码。
通过对这些编码数字使用一种计算方法可以检验输入的数字是否正确。
这种称为13位数字的“1-3和”的计算方法是,从第一位开始乘1,每个数字交替乘以1和3,然后算出相加的和。
例如,9780921418948的“1-3和” 的计算如下:9*1+7*3+8*1+0*3+9*1+2*3+1*1+4*3+1*1+8*3+9*1+4*3+8*1=120要求输入商品编码,计算对应的“1-3和”。
样例输入:9780921418948样例输出:120varc:char;s,i,n,m:integer;begins:=0;for i:=1 to 13 do beginread(c);if i mod 2=1 then m:=1 else m:=3s:=s+m*(ord(c)-48);0 ascii 码48end;writeln(s);end.输入 1234567890123 输出 95 输入 1230145678922 输出 94输入 3309890786442 输出 139 输入 9978564578341 输出 156四、寻找x的幂(文件名xzxdm.pas)数学上把x的k次方叫x的k次幂,如4的3次幂为4自乘3次。
给定一个整数n,请输出距离它最近的那个x的幂是多少。
如果有两个距离相同,输出那个小的。
输入整数x(2 ≤ x ≤ 5)和n(10 ≤ n ≤ 20000),输出一个整数,表示距离最近的那个x的幂。
样例输入:2 17样例输出:16varn,x,tp,tp1:integer;beginreadln(x,n);tp:=x;repeattp:=tp*x; 幂until tpn;tp1:=tp div x;if tp-n=n-tp1 then writeln(tp1)else writeln(tp);end.1、输入:3 80输出:812、输入:5 625输出:6253、输入:4 12288输出:163844、输入:2 5768输出:4096五、表达式计算(文件名bds.pas)输入一个正整数n(1≤n≤500),求s=1+2-3+4+5-6+7+8-9+??+n,并统计其中共有多少个减号。
输入只有1行,一个正整数n。
输出文件也只有一行,二个整数,中间用空格隔开,分别表示s的值和减号的个数。
样例:输入: 15输出:30 5vari,s,k,n:longint;beginreadln(n);s:=0 ; k:=0;for i:=1 to n doif i mod 3=0 then begink:=k+1 ; s:=s-i;endelse s:=s+i;writeln(s, ,k);end.输入 45 输出 315 15 输入 500 输出 42084 166输入 200 输出 6834 66 输入 139 输出 3244 46六、有趣的质数(文件名:yqdzs.pas)小明发现了一个有趣的现象,有些数字(例如:2333)本身是个质数,将末尾数去掉后发现它仍然是质数,依此类推,一直到第一位仍是质数(含1)。
现在给定m和n的值(mn≤30000),求在这个范围内有多少个这种数字。
输入输出示例:输入:50 100输出:5说明:五个符合的质数是53、59、71、73、79。
varn,m,i,a,j,t:longint;f:boolean;beginread(n,m);for i:=n to m do begina:=i;f:=true;repeatfor j:=2 to trunc(sqrt(a)) doif a mod j=0 then f:=false;a:=a div 10;until (a=0) or (f=false);if f then inc(t);end;writeln(t);end.输入5 257输入 50 150032输入 9000 11000 输出 0输入 29000 29500 输出 1七、素数算式(文件名:ssss.pas ssss.bas在下面的算式中每个“#” 都表示一个素数数字。
##*#ssss.lgo)【篇二:noip普及组复赛模拟试题23(答案)】lass=txt>给出用等号连接的两个整数,如“1234=127”。
当然,现在这个等号是不成立的。
题目让你在左边的整数中间某个位置插入一个加号,看有没有可能让等号成立。
以上面的式子为例,如果写成123+4=127,这就可以了。
请你编写一个程序来解决它。
input 只有那个不相等的式子。
已知,等号两边的整数都不会超过 200000000000。
output 如果存在这样的方案,请输出那个正确的式子。
如果不存在解决方案,请输出“impossible!”(引号中的部分)。
sample input 1234=127sample output 123+4=127program ex1075;var i,len,p:integer;a1,a2,b:longint;st,st1,st2,st3:string;beginreadln(st);p:=pos(=,st);st1:=copy(st,1,p-1);delete(st,1,p);val(st,b,x);len:=length(st1);for i:=1 to len-1 dobeginst2:=copy(st1,1,i);val(st2,a1);st3:=copy(st1,i+1,len-i);val(st3,a2);if a1+a2=b then begin writeln(a1,+,a2,=,b);exit; end;end;writeln(impossible!)end.输入 45789=5793输出 4+5789=5793输入 34345678932=343456821输出 343456789+32=343456821输入 123456789=12345输出impossible!1985764235=1985999输出 1985764+235=1985999给若干个字符串,判断该字符串最多重复了几次,比如,给ababab,结果是3,因为ab重复了3次,因为求最多重复了几次,所以结果不是1,在比如abcdabcd结果是2,abcd结果是1.输入一组字符串,以“。
”作为结束标志。
样例输入1aaaa abcd。
样例输出 41varp:array[0..1000000]of longint;s:ansistring;procedure work;vari,j:longint;beginfillchar(p,sizeof(p),0); j:=0;fori:=2 to length(s) do{自己和自己匹配} beginwhile (j0)and(s[j+1]s[i])do j:=p[j];ifs[j+1]=s[i] then inc(j); p[i]:=j;end;if(length(s)mod(length(s)-p[length(s)])=0)and(length(s)(length(s)-p[length(s)]))then writeln(length(s) div (length(s)-p[length(s)])){p数组的应用使得求解方便得很。
} elsewriteln(1);end;beginreadln(s);whiles. do begin work; readln(s);end;end.输入xyzxyzteateatecatcatcat.输出 213输入 yyyyuyyyyyyyteletele.输出172【题目描述】蚊子最近经常做噩梦,然后就会被吓醒。
这可不好。
疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事。
如果那些事出现在她的梦里,就会害怕。
我们可以假定那个害怕的事其实是一个字符串。
而她做的梦其实也是一个字符串。
她可以一个晚上一直做梦,所以梦这个字符串会很长,如果其中包含了她所害怕的事情,那么她这天晚上就会害怕。
当然一个害怕的事也可能在这天晚上被她梦到很多遍,当然每个晚上也可能有很多种害怕的事都被梦到。