write(a[i]);
sort(i+1,n);
end;
调用该过程的语句为sort2(0,n),比较运算的次数为:
________
(3)proceduresort3(i,j:
integer);
varm:
integer;
begin
ifi<>jthen
begin
m:
=(i+j)div2;
sort3(i,m);
sort3(m+1,j);
merge;{假设合并的元素分别为P、Q个,需要比较P+Q次}
end;
end;
调用该过程的语句为sort3(0,n),比较运算的次数为:
________
{12.2000年初中组第1题}
programnoi_002;
vari,j,m,n,k,s,t:
integer;
b:
array[1..10]of0..9;
begin
readln(m,n);
s:
=m;k:
=1;t:
=m;
whiles=k+1;t:
=t*m;s:
=s+tend;
s:
=s-t;n:
=n-s-1;
fori:
=1to10dob[i]:
=0;
j:
=11;
whilen>0do
begin
j:
=j-1;b[j]:
=nmodm;n:
=ndivm;
end;
fori:
=10-k+1to10dowrite(chr(ord('a')+b[i]));
end;
输入:
4167输出:
{13、2000年初中组第2题}
programnoi_004;
vari,j,j1,j2,p,q:
integer;
p1:
boolean;
b,c:
array[1..100]ofinteger;
begin
readln(p,q);j:
=1;p1:
=true;b[j]:
=q;j1:
=0;
while(q>0)andp1do
begin
j1:
=j1+1;c[j1]:
=q*10divp;q:
=q*10-c[j1]*p;
ifq>0then
begin
j2:
=1;
while(b[j2]<>q)and(j2<=j)doj2:
=j2+1;
ifb[j2]=qthen
begin
p1:
=false;write('0.');
fori:
=1toj2-1dowrite(c[i]:
1);
write('{');
fori:
=j2toj1dowrite(c[i]:
1);
writeln('}');
end
elsebeginj:
=j+1;b[j]:
=qend;
end;
end;
ifq=0then
begin
write('0.');
fori:
=1toj1dowrite(c[i]:
1);
writeln
end;
readln
end.
输入:
18输出:
输入:
27输出:
{14、2000年高中组第1题}
progarmnoi_003;
constn=7;m=6;
vari,j,x0,y0,x1,x2,y1,y2:
integer;
d:
real;p:
boolean;g:
array[0..n,0..m]of0..1;
functiondisp(x1,y1,x2,y2:
integer):
real;{计算两点间距离}
begin
disp:
=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
end;
begin
fori:
0tondoforj:
=0tomdog[i,j]:
=0;
readln(x1,y1,x2,y2);
g[x1,y1]:
=1;g[x2,y2]:
=1;p:
=true;
whilepdo
begin
p:
=false;
d:
=disp(x1,y1,x2,y2);
x0:
=x1;y0:
=y1;
fori:
=4tondo
forj:
=0tomdo
if(d>disp(i,j,x2,y2))and(g[i,j]=0)then
begin
d:
=disp(i,j,x2,y2);x0:
=i;y0:
=j;
end;
if(x0<>x1)or(y0<>y1)then
begin
x1:
=x0;y1:
=y0;P:
=true;g[x1,y1]:
=1;
end;
d:
=disp(x1,y1,x2,y2);x0:
=x2;y0:
=y2;
fori:
=0to3do
forj:
=0tomdo
if(dbegin
d:
=disp(x1,y1,i,j)x0:
=i;y0:
=j;
end;
if(x0<>x2)or(y0<>y2)then
beginx2:
=x0;y2:
=y0;p:
=true;g[x2,y2]:
=1;end;
end;
writeln(x1,y1,x2,y2);
end.
输入:
7600输出:
{15、2003高中组第一题}
programProgram1;
vara,b,c,d,sum:
longint;
begin
read(a,b,c,d);
a:
=amod23;b:
=bmod28;c:
=cmod33;
sum:
=a*5544+b*14421+c*1228-d;
sum:
=sum+21252;sum:
=summod21252;
if(sum=0)thensum:
=21252;
writeln(sum);
end.
输入:
28310223320输出____________
{16、2003高中组第二题}
programProgram2;
constu:
array[1..4]ofinteger=(0,5,3,1);
v:
array[1..4]ofinteger=(0,7,6,5);
vara,b,c,d,e,f,x,y,z:
integer;
begin
read(a,b,c,d,e,f);
z:
=f+e+d+(c+3)div4;y:
=5*d+u[cmod4];
if(b>y)then
begin
z:
=z+(b-y+8)div9;
x:
=((b-y+8)div9*9-(b-y))*4+11*e+v[cmod4];
end
elsex:
=(y-b)*4+11*e+v[cmod4];
if(a>x)thenz:
=z+(a-x+35)div36;
writeln(z)
end.
输入:
479205647输出____________________
{17.2003高中组第三题}
programprogram3;
varm,n:
integer;mark:
boolean;
functiontest(m,n:
integer):
integer;
vari,p:
integer;flag:
boolean;
begin
m:
=m-1;i:
=0;flag:
=false;
forp:
=2*ndownton+1do
begin
i:
=(i+m)modp;
ifi=0;flag:
=true;break;end
end;
ifnotflagthentest:
=1;
end;
begin
read(n);m:
=1;mark:
=false;
repeat
iftest(m,n)=1thenbeginwriteln(m);break;end;
m:
=m+1;
untilmark;
end.
输入:
7输出_________
{18.2003年高中组第四题}
varm,n,i,j:
integer;
p,w,a,b:
array[0..19]ofinteger;
begin
read(n);m:
=0;
fori:
=0ton-1dobeginread(p[i]);b[i]:
=1;end;
fori:
=0ton-1do
begin
ifi>0thena[m]:
=p[i]-p[i-1]elsea[m]:
=p[i];
m:
=m+1;
while(m>1)and(a[m-1]=0)dobeginm:
=m-1;b[m]:
=1;end;
ifm>0thenw[i]:
=b[m-1]elsew[i]:
=b[0];
a[m-1]:
=a[m-1]-1;
forj:
=0tom-1dob[j]:
=b[j]+1;
while(m>1)and(a[m-1]=0)dobeginm:
=m-1;b[m]:
=1;end;
end;
fori:
=0ton-1do
begin
write(w[i]);write('');
end;
writeln('');
end.
输入:
9
4666689999
输出:
____________________
{19、2003初中组第一题}
vara,x,y,ok1,ok2:
integer;
begin
a:
=100;x:
=10;y:
=20;ok1:
=5;ok2:
=0;
if(x>y)or((y<>20)and(ok1=0))and(ok2<>0)thena:
=1
elseif(ok1<>0)and(ok2=0)thena:
=-1elsea:
=0;
writeln(a);
end.
{20、2003初中组第三题}
vara,b,c,d,sum:
longint;
begin
read(a,b,c,d);
a:
=amod23;b:
=bmod28;c:
=cmod33;
sum:
=a*5544+b*14421+c*1288-d;
sum:
=sum+21252;
sum:
=summod21252;
ifsum=0thensum:
=21252;
writeln(sum);
end.
输入:
3986输出:
_____________
{21、2003初中组第四题}
vara:
array[0..5]ofinteger;
sum,n,max,i,j,k:
integer;
cover:
array[0..22000]ofboolean;
begin
read(a[5],a[4],a[3],a[2],a[1],a[0]);
if(a[5]=0)and(a[3]=0)and(a[1]=0)then
begin
a[5]:
=a[4];a[4]:
=a[2];a[3]:
=a[0];a[2]:
=0;a[0]:
=0;
end;
fori:
=0to5doifa[i]>10thena[i]:
=10+a[i]mod2;
sum:
=0;
fori:
=0to5dosum:
=sum+a[i]*(6-i);
ifsummod2<>0thenbeginwriteln('Can''tbedivided.');exit;end;
sum:
=sumdiv2;max:
=0;cover[0]