2006年全国信息学奥赛复赛普及组(pascal)试题

要答案

program count;
var s,t,w,s1,i,j:integer;
str1:string;
a:array[1..25]of byte;

procedure print;
var i:integer;
begin
for i:=1 to w do
write(chr(a[i]+ord('a')-1));
writeln;
end;

begin
assign(input,'count.in');
reset(input);
assign(output,'count.out');
rewrite(output);
readln(s,t,w);
readln(str1);
for i:=1 to w do
a[i]:=ord(str1[i])-ord('a')+1;
s1:=0;j:=w;
while(a[1]<=t-w+1)and(s1<5)do
begin
inc(a[j]);
while a[j]<=t do
begin
if j=w then begin
s1:=s1+1;
print;
inc(j);
break;
end
else begin
inc(j);
a[j]:=a[j-1]+1;
end;
end;
dec(j);
end;
close(input);
close(output);
end.

program happy;
type arr=record
jg:integer;
zy:integer;
end;
arra=record
bo:boolean;
zh:integer;
end;
var a:array[1..30100] of arr;
b:array[0..30100] of arra;
i,j,n,m:integer;
total:longint;

procedure dongtai;
var i,j,s,t:integer;
begin
s:=0;
for j:=1 to m do
begin
if s>n then s:=n;
for i:=s downto 0 do
if b[i].bo then
begin
s:=s+a[j].jg;
if b[i+a[j].jg].bo then
t:=b[i+a[j].jg].zh;
b[i+a[j].jg].bo:=true;
b[i+a[j].jg].zh:=b[i].zh+a[j].jg*a[j].zy;
if b[i+a[j].jg].zh<t then b[i+a[j].jg].zh:=t;
end;
end;
end;

begin{main}
assign(input,'happy.in');
assign(output,'happy.out');
reset(input);
rewrite(output);
readln(n,m);
for i:=1 to m do
read(a[i].jg,a[i].zy);
readln;
b[0].bo:=true;
b[0].zh:=0;
dongtai;
for i:=0 to n do
if (b[i].bo)and(total<b[i].zh) then
total:=b[i].zh;
writeln(total);
close(input);
close(output);
end.

program random;
var a:array[1..1000]of 0..1;
n,i,k,t:integer;
begin
assign(input,'random.in');
reset(input);
assign(output,'random.out');
rewrite(output);
readln(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
read(k);
if a[k]=0 then begin
inc(t);
a[k]:=1;
end;
end;
writeln(t);
for i:=1 to 1000 do
if a[i]=1 then write(i,' ');
close(output);
close(input);
end.

program sequence;
var t,n,k,i,j,s,total:integer;
a:array[0..20]of 0..1;

begin
assign(input,'sequence.in');
reset(input);
assign(output,'sequence.out');
rewrite(output);
readln(k,n);
t:=n;s:=0;
while t<>0 do
begin
a[s]:=t mod 2;
t:=t div 2;
inc(s);
end;
total:=0;
if a[0]=1 then total:=1;
for i:=1 to s-1 do
if a[i]=1 then
total:=total+k**i;
writeln(total);
close(output);
close(input);
end.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-11
没答案,能运行就可以。