
初中pascal编程题
回文数字提交文件输入文件输出文件时限huiwen.pashuiwen.inhuiwen.out1s【问题描述】数学老师在课堂上出了一个奇怪的题目若一个数(首位不为零)从左...
回文数字提交文件输入文件输出文件时限huiwen.pashuiwen.inhuiwen.out1s【问题描述】 数学老师在课堂上出了一个奇怪的题目若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次10进制的加法,上例最少用了4步得到回文数4884。写一个程序,给定一个10进制数M,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”Zzc由于这几天刚好感冒,发烧,头痛得厉害,实在不能动脑筋了,就来拜托你了。输入格式:一行一个正整数m输出格式:一行第一行为经过的步数或“Impossible!”样例输入:87样例输出:4注:对于70%的输入数据,1<=m<=maxlongint 对于100%的输入数据,m的长度小于等于100位
展开
2个回答
2013-10-17
展开全部
高精度 ..跟楼上的一样00...var
a, b : array[0 .. 1000]of longint;
n, i, j : longint;
function check : boolean;
var i : longint;
begin
for i := 1 to a[0] div 2 do
if a[i] <> a[a[0] - i + 1] then exit(false);
exit(true);
end;
begin
readln(n);
while n > 0 do begin inc(a[0]); a[a[0]] := n mod 10; n := n div 10; end;
if check then begin writeln('0'); halt; end;
for i := 1 to 30 do begin
for j := 1 to a[0] do
b[j] := a[a[0] - j + 1];
for j := 1 to a[0] do
begin
a[j] := a[j] + b[j];
a[j + 1] := a[j + 1] + a[j] div 10;
a[j] := a[j] mod 10;
end;
if a[a[0] + 1] > 0 then inc(a[0]);
if check then begin writeln(i); halt; end;
end;
writeln('Impossible!');
end.
a, b : array[0 .. 1000]of longint;
n, i, j : longint;
function check : boolean;
var i : longint;
begin
for i := 1 to a[0] div 2 do
if a[i] <> a[a[0] - i + 1] then exit(false);
exit(true);
end;
begin
readln(n);
while n > 0 do begin inc(a[0]); a[a[0]] := n mod 10; n := n div 10; end;
if check then begin writeln('0'); halt; end;
for i := 1 to 30 do begin
for j := 1 to a[0] do
b[j] := a[a[0] - j + 1];
for j := 1 to a[0] do
begin
a[j] := a[j] + b[j];
a[j + 1] := a[j + 1] + a[j] div 10;
a[j] := a[j] mod 10;
end;
if a[a[0] + 1] > 0 then inc(a[0]);
if check then begin writeln(i); halt; end;
end;
writeln('Impossible!');
end.
2013-10-17
展开全部
该题含有多组测试数据。
每组测试数据为一整数n (1<=n<=maxlongint)
Output
输出1~n中有多少个自然数可以作为Pascal数字
Sample Input
10
Sample Output
9
每组测试数据为一整数n (1<=n<=maxlongint)
Output
输出1~n中有多少个自然数可以作为Pascal数字
Sample Input
10
Sample Output
9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询