noip普及组复赛模拟试题27(答案)

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

输入二个正整数x0,y0(2≤x0≤10000,2≤y0≤100000),求出满足下列条件的P、Q的个数。

条件: 1.P、Q是正整数

2.要求P、Q以xO为最大公约数,以yO为最小公倍数。

试求,满足条件的所有可能的两个正整数的个数。

输入输出样例:

输入:

x0 = 3

y0 = 60

输出:

4

说明:(不用输出)此时的 P Q 分别为:

3 60

15 12

12 15

60 3

所以,满足条件的所有可能的两个正整数的个数共4种。

var

i,pq,x0,y0,num,c : longint;

function gcd(a,b : longint) : longint;

begin

while b > 0 do begin

c := a mo

d b; a := b; b := c;

end;

gcd := a;

end;

begin

repeat

write('X0 = '); readln(x0);

write('Y0 = '); readln(y0);

until (x0 >= 2) and (x0 < 10000) and (y0 >= 2) and (y0 < 100000);

pq := x0*y0; num := 0;

for i := x0 to y0 do

if (pq mod i = 0) and (gcd(pq div i,i) = x0) then num := num+1;

writeln(num);

end.

输入2 2 输出1 输入12 986 输出0

输入 6 96 输出2 输入10 10000 输出 4

在黑板上从1开始写出一组连续的自然数,然后擦去其中的一个数k,其余的数的平均值为a+c/b(繁分式)。试编写程序求出被擦去的数k。例如:在黑板上写出1,2,......,69之后把数7擦去而得到的其余的68个数的平均值为35+7/17。

输入一行三个数,分别为a、b、c(a,b,c≤100),用空格分隔。输出为擦去的数k。若对于输入的三个数无解,则输出“NO”。

输入输出示例:

输入1:35 17 7 输出1:7 输入2:1 3 2 输出2:NO

Var a,b,c,t,k,s,t,I,n:integer; k: 擦去数s: 分子倍数t: 连续数累加和

Begin readln(a,b,c);

for n:=1 to 10000 do begin

s:=(a*b+c)*n;

t:=0; for i:=1 to n*b+1 do t:=t+i;

k:=t-s;

if k>0 then begin

if k<=b*n+1 then writeln(k)

else writeln('NO');

halt

end;

end;

end.输入

1、45 3 2

76

2、1 3 1

NO

3、1 2 1

3

4、1121 8

14

输入一个长度为N的数字串,要求你删掉其中的K个数字,使得剩下的数最大。例如:数字串为5123,K=1时,如果删掉的数字分别是5、1、2、3,则剩下的数分别为123、523、513、512,其中523是最大的。输入:第一行为两个整数N和K(1〈N≤100,0〈K〈N〉第二行是一个长度为N的数字串. 输出:删掉K个数字之后剩下的最大数样例:输入:N,K=4 1↙5123输出:523

Var s:string; n,k,a,b:integer;

t:boolean;

begin

write('N,K=');

readln(n,k);

readln(s);

for a:=1 to k do

begin

t:=false;

for b:=1 to length(s) do if s[b]

begin

delete(s,b,1);

t:=true;

break;

end;

if t=false then delete(s,(n-a+1),1);

end;

writeln(s);

readln;

end.

输入12 3

367452897691

输出752897691

输入10 6

1239876542 输出9876

输入20 7

42896541011237912458 输出9654237912458

输入50 4

19283456876512309782456781234956789654321907865637

输出9856876512309782456781234956789654321907865637

给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。

【输入格式】

第一行为两个正整数n和b,第二行为1~n的排列

【输出格式】

输出一个整数,即中位数为b的连续子序列个数

【输入样例】7 4

5 7 2 4 3 1 6

【输出样例】4 (4个符合条件的序列分别为为{4}、{7,2,4}、{5 ,7,2,4,3}、{5,7,2,4,3,1,6}) var q,w:array[1..1000] of longint;

zh,i,j,k,l,m,n,t,p,o:longint;

begin

readln(n,zh);

for i:=1 to n do read(q[i]);

for i:=1 to n do if q[i]=zh then begin k:=i;break;end;

l:=1;

for i:=1 to k do

for j:=i+1 to n do

if not(odd(j-i)) then

begin

for o:=i to j do w[o]:=q[o];

for o:=i to j-1 do

for p:=o+1 to j do

if w[o]>w[p] then begin t:=w[o];w[o]:=w[p];w[p]:=t;end;

if zh=w[(i+j) div 2] then l:=l+1;

end;

writeln(l);

end. 输入10 6

2 4 5 7 9 8 10

3 1 6 输出 3

输入15 9

14 8 9 12 3 4 5 10 7 1 2 11 15 6 13 输出5

输入 6 5

1 2 3 4 5 6 输出 2

输入25 18

9 10 2 3 4 5 20 21 22 6 1 11 15 19 18 17 23 25 24 7 8 12 13 14 15 16输出20

求N个字符串的最长公共子串,其中N<20,字符串长度不超过255.如输入N=5,五个字符串分别为LOOK,BOOK, DOG, CA T,FOOK,则输出NOT FIND,如输入N=6,六个字符串分别为BOOK, LOOK, TOK,COK,DOK,FOK,则输出THE LARGEST IS:OK. 例如n=3,由键盘依次输入三个字符串为:

what is local bus?

Name some local bus.

Local bus is high speed I/O bus close to the processor.

则最长公共子串为“local bus”。

相关文档
最新文档