第1题 求和问题
program a1(input,output);
var x,a,b,c,n:integer;
begin
readln(x);
if(x>99) and (x<1000)then
begin
n := x;
a := x div 100;
x := x – a * 100;
b := x div 10;
c := x – b * 10;
x := c * 100 + b * 10 +a;
n := n + x;
writeln(n);
end
else
writeln(‘Input error!’);
end.
第2题 换钱游戏
program a2(input,output);
var a,b,c:real;
n:integer;
begin
a:=100000;
b:=1;
c:=2;
n:=1;
while (a>=b) do
begin
a:=a+100000;
b:=b+c;
c:=c*2;
n:=n+1;
end;
writeln(n);
end.
第3题 残料问题
program a3(input,output);
var i,a,b,c,r:integer;
begin
r:=27;
for i:=1 to 11 do
begin
c:=(321-i*27) mod 17 ;
if c<r then
begin
r:=c;
b:=i;
a:=(321-i*27) div 17;
end;
end;
writeln(a);
writeln(b);
writeln(r);
end.
第4题 拐角问题
program a2(input,output);
var i,j,n,s:integer;
begin
s:=0;
readln(n);
for i:=1 to n do
for j:=n downto 1 do
begin
if (i<j) then write(i:3) else write(j:3);
s:=s+1;
if (s mod n = 0) then writeln(”);
end;
end.
第5题 狼追兔子
分析:该题看似简单,只要每次把狼找过的洞删除就行了,但是,这种删除操作的结束状态(条件)是什么呢?而且,狼的搜索过程中,如果要间隔11个洞时,我们是否可以认为就是间隔1个洞?
实际上,第一个问题应该是当狼回到第1个洞,并且又上间隔1个洞去找兔子时,就应该结束删除操作,因为此后的搜索是重复以前的搜索了,此时,那些没有被删除过的洞就是答案。这里,大家一定不能想当然地认为:结束条件就是只剩下一个洞的时候!题目中并没有说明只有一个答案,事实上是有四个洞的!
第二个问题也是可行的。因为只有10个洞,间隔11个洞和间隔1个洞的作用是相同的。
program a5(input,output);
var d:array[1..10] of integer;
i,j,k,l:integer;
begin
for i:=1 to 10 do d[i]:=1;
i:=1;
j:=1;
repeat
d[i]:=0;
j:=j+1;
if j>10 then j:=j-10;
i:=i+j;
if i>10 then i:=i-10;
until (i=1) and (j=1);
for i:=1 to 10 do if d[i]>0 then write(i);
end.
原创文章,转载请注明: 转载自感叹忽然的部落格
本文链接地址: 2009年青岛市程序设计竞赛试题(小学B组)参考答案