师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第29页
t:=0;
for k:=1 to 9 do t:=t+a[k];
if t=9 then writeln(i:4,i*2:4,i*3:4); end; end.
4、 回文算术:任给一个三位数abc,算出abc与cba之和。若该和数不是回文数(回文数的定义是
从左读和从右读一样,如5、121、1221等),再按上述方法求和。以此类推,直到得到回文形式的和数或者和数的位数已经超过15位时中止计算。
(★★★)
(分析:注意此题中处理回文数判断的方法和处理数组高精度加法的方法) program e; var
a,b:array[1..20] of integer; x,i,m:integer; hw:boolean; begin
writeln; write('abc='); readln(x); for i:=1 to 15 do a[i]:=0;
a[1]:=x mod 10; a[2]:=(x div 10) mod 10; a[3]:=x div 100; m:=3; hw:=false;
while (hw=false)and(m<15) do begin
for i:=1 to m do b[i]:=a[m-i+1]; i:=1;
while (i<=m)and(a[i]=b[i]) do i:=i+1; if i>m then hw:=true else begin
for i:=m downto 1 do write(a[i]); write('+');
for i:=m downto 1 do write(b[i]); write('=');
for i:=1 to m do
begin a[i]:=a[i]+b[i]; a[i+1]:=a[i+1]+a[i] div 10; a[i]:=a[i] mod 10; end; if a[m+1]>0 then m:=m+1;
for i:=m downto 1 do write(a[i]); writeln; end; end;
if hw then writeln('success!') else writeln('Fail!'); end.
5、 求一个n×n数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。
(★★)
(测试数据:(矩阵1)
(矩阵2)
师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第30页
15 11 22 17 13
4 9 3 1 10
14 23 21 24 19
25 16 18 12 20
7 8 5 6 2
11 5 3 17 13
4 9 22 16 10
2 23 21 24 19
7 1 18 12 20
8 25 15 6 14
program e; const n=5; var
i,j,min,x,y:integer; flag:boolean;
a:array[1..n,1..n] of integer; begin
writeln; writeln('input ',n,'*',n,' integer number:'); for i:=1 to n do for j:=1 to n do read(a[i,j]); flag:=false; for i:=1 to n do begin
min:=a[i,1]; x:=i; y:=1; for j:=1 to n do
if a[i,j] if a[j,y]>a[x,y] then break; if (j=n)and(a[x,y]>a[n,y]) then begin write(a[x,y],'(',x,',',y,')'); flag:=true; end; end; if flag=false then writeln('No find!'); end. 6、 数学黑洞6174。已知:一个任意的四位正整数(全相同的除外,如1111)。将数字重新组合成一 个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。 求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。 (★★★) program e18; var a:array[1..4] of integer; i,j,d,k:integer; begin writeln('input a si wei shu:'); read(d); if (d mod 1111<>0) then while d<>6174 do begin 师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第31页
相关推荐: