主题:[讨论]请教一道PASCAL的题目!+++++30
梦幻神兵
[专家分:600] 发布于 2006-02-10 11:03:00
题目是:11、323、74947、63144136这样的数叫回文数,其中11是个更特殊的回文数,它的平方121、立方1331也是回文数,这是最小的一个具有这种性质的回文数。请编程求出三次方小于999999999的具有上述性质的所有回文数。[em1]
回复列表 (共4个回复)
沙发
delphi6 [专家分:3450] 发布于 2006-02-10 12:11:00
把数字分开,分别入栈和队列,然后弹出元素进行比较,看是否满足条件。
板凳
erping [专家分:3660] 发布于 2006-02-10 12:34:00
//初学 pascal,可能有误
{
题目是:
11、323、74947、63144136这样的数叫回文数,
其中11是个更特殊的回文数,它的平方121、
立方1331也是回文数,这是最小的一个具有这
种性质的回文数。请编程求出三次方小于
999999999的具有上述性质的所有回文数
}
program one;
{$APPTYPE CONSOLE}
function IsPalindromeNumber(n :Integer) : Boolean;
var
s :Array[1..10] of Char;
i, j :Integer;
begin
i := 1;
while n <> 0 do
begin
s[i] := Char(n mod 10);
n := n div 10;
Inc(i);
end;
j := 1;
Dec(i);
IsPalindromeNumber := True;
while i > j do
begin
if s[i] <> s[j] then
begin
IsPalindromeNumber := False;
j := i;
end;
Dec(i);
Inc(j);
end;
end;
var
i, n :integer;
begin
i := 11;
while i <> 0 do
begin
n := i;
if IsPalindromeNumber(n) then
begin
n := n * i;
if IsPalindromeNumber(n) then
begin
n := n * i;
if n < 999999999 then
begin
if IsPalindromeNumber(n) then Writeln(i);
end
else begin
i := -1; //创造条件退出循环
end;
end;
end;
Inc(i);
end;
end.
3 楼
风清书阳 [专家分:60] 发布于 2006-02-15 11:58:00
首先入栈出栈,再选择合适的数组进行选择
4 楼
编程黑客 [专家分:1660] 发布于 2006-02-26 22:22:00
先入栈出栈,再选择合适的数组进行选择
要用高精度或是数组
我来回复