诛仙免费阅读天涯:PAS的回文数问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 16:14:04
例:给定一个10进制56,56+65=121得到回文数
输入N(2<N<=10的9次方)
输入一个N进制的M
用以上方法多少次计算能使M变为回文数,如果次数大于30(不包括30)就打印’IMPOSSIBLE’
请给出全程序

var n,temp:longint;sum:array[1..1000]of integer;long,ans,i:integer;x:boolean;
procedure aba;
var j:integer;
begin
x:=true;
for j:=1 to long div 2do
if sum[j]<>sum[long-j+1]then
begin
x:=false;
break;
end;
end;
procedure qh;
var s,g,j:integer;a:array[1..1000]of integer;
begin
g:=0;
for j:=1 to long do
begin
s:=sum[j]+sum[long-j+1]+g;
a[j]:=s mod 10;
g:=s div 10;
end;
if g>=1 then
begin
inc(long);
a[long]:=g;
end;
for j:=1to long do sum[j]:=a[j];
end;
begin
readln(n);
ans:=0;
long:=0;
repeat
inc(long);
sum[long]:=n mod 10;
n:=n div 10;
until n=0;
for i:=0 to 30 do
begin
aba;
if x then break
else
begin
inc(ans);
qh;
end;
end;
if x then writeln(ans)
else writeln('Impossible!');
readln;
end.

这个是我自己编的,但是总是presetation error

1211hfd

wertqawer