求noip2007普及组复赛试题及答案。

第一题

程序学者(输入、输出);

变量a,b,c,id,s:array[1..300]的整数;v:array[0..0]的布尔值;

I,j,k,t,m,n,x,y:整数;

开始

assign(输入,' scholar . in ');

assign(output,' scholar . out ');

复位(输入);重写(输出);

readln(n);

对于i:=1到n do

begin readln(a[i],b[i],c[I]);id[I]:= I;结束;

对于i:=1到n do

s[I]:= a[I]+b[I]+c[I];

对于i:=1到n-1 do

for j:=i to n do

开始

如果s[I]& lt;那么s[j]

开始

t:= s[I];s[I]:= s[j];s[j]:= t;

t:= a[I];a[I]:= a[j];a[j]:= t;

t:= b[I];b[I]:= b[j];b[j]:= t;

t:= c[I];c[I]:= c[j];c[j]:= t;

t:= id[I];id[i]:=id[j]。id[j]:= t;

结束;

如果s[I]= s[j]那么

如果a[I]& lt;那么

开始

t:= s[I];s[I]:= s[j];s[j]:= t;

t:= a[I];a[I]:= a[j];a[j]:= t;

t:= b[I];b[I]:= b[j];b[j]:= t;

t:= c[I];c[I]:= c[j];c[j]:= t;

t:= id[I];id[i]:=id[j]。id[j]:= t;

结束

结束;

for i:=1到5 do

writeln(id[i],' ',a[I]+b[I]+c[I]);

关闭(输入);关闭(输出);

结束。

第二个问题

程序组(输入、输出);

定义变量

s,I,w,n:整数;

答:数组[1..30000]的整数;

过程sort_quick(l,r:整数);

var i,j,x,y:整数;

开始

I:= l;j:= r;

x:= a[(l+r)div 2];

重复

而a[I]& lt;x do公司(一);

而x & lta[j]do dec(j);

如果我& lt=那么j

begin y:= a[I];a[I]:= a[j];a[j]:= y;inc(一);第十届会议;结束;

直到我& gtj;

如果我& ltr然后sort_quick(i,r);

如果我& ltj然后sort_quick(l,j);

结束;

开始

赋值(input,' group . in ');

赋值(output,' group . out ');

复位(输入);重写(输出);

readln(w);readln(n);

对于i:=1到n do

readln(a[I]);

sort_quick(1,n);

I:= 1;s:= 0;

重复

如果a[I]+a[n]& lt;=w然后开始s:= s+1;inc(一);十二月(日);结束

else开始s:= s+1;十二月(日);结束;

直到我& gtn;

书写内容;

关闭(输入);

关闭(输出);

结束。

第三个问题

还没做出来

第四个问题

程序河内(输入,输出);

var n,I:整数;

s:字符串;

函数twox(var ss:string):string;

定义变量

I,j:整数;

sss:字符串;

开始

ss:= ' 0 '+ss;

SSS:= ss;

I:=长度(ss);

for j:=1 to i do

开始

if ss[j+1]>那就4分钟

案例ss[j]

“0”,“5”:SSS[j]:=“1”;

1”,“6”:SSS[j]:=“3”;

2 ',' 7 ':SSS[j]:= ' 5 ';

3 ',' 8 ':SSS[j]:= ' 7 ';

4 ',' 9 ':SSS[j]:= ' 9 ';

结束;

if ss[j+1]& lt;那就5分钟吧

案例ss[j]

“0”,“5”:SSS[j]:=“0”;

1”,“6”:SSS[j]:=“2”;

2 ',' 7 ':SSS[j]:= ' 4 ';

3 ',' 8 ':SSS[j]:= ' 6 ';

4 ',' 9 ':SSS[j]:= ' 8 ';

结束;

结束;

如果sss[1]='0 ',则

开始

SSS[1]:=“”;

删除(sss,1,1);

结束;

twox:= SSS;

结束;

开始

赋值(输入,' Hanoi . in ');

赋值(output,' Hanoi . out ');

复位(输入);重写(输出);

readln(n);

s:= ' 1 ';

对于i:=1到n+1 do

s:= twox(s);

I:=长度(s);

s[I]:= chr(ord(s[I])-2);

书写内容;

关闭(输入);关闭(输出);

结束。