主题:1111111
6yangweihua
[专家分:180] 发布于 2005-09-07 20:08:00
找出100到999之间的整数中所有等于它每位数字立方和的数.
回复列表 (共8个回复)
沙发
QQ331373582 [专家分:1500] 发布于 2005-09-07 20:10:00
var a,b,c,d,x:integer;
begin
for x:=1000 to 9999 do begin
a:=x mod 10;
b:=x div 10 mod 10;
c:=x div 100 mod 10;
d:=x div 1000 mod 10;
if(x mod 11=0)and(b+c=a)and(a<>b)and(a<>c)and(a<>d)and
(b<>c)and(b<>d)and(c<>d)and(((sqrt(10*b+c))-trunc(sqrt(10*b+c)))=0)
then writeln(x);
end;
end.
3 楼
mo19880630 [专家分:420] 发布于 2005-09-08 12:50:00
1楼的人做得非常正确,但用循环结构做的题似乎很容易超时!!!
所以应当优化算法,否则数字一大就很多时间才能出一个结果!!!
[img]http://sports.sohu.com/upload/wallpapers/shaq_yao1024x768.jpg[/img]
4 楼
sansan33 [专家分:0] 发布于 2005-09-08 14:19:00
1楼的朋友这段我不太明白,为什么是这样,能告诉我吗?if(x mod 11=0)and(b+c=a)and(a<>b)and(a<>c)and(a<>d)and
(b<>c)and(b<>d)and(c<>d)and(((sqrt(10*b+c))-trunc(sqrt(10*b+c)))=0)
then writeln(x);
5 楼
QQ331373582 [专家分:1500] 发布于 2005-09-08 19:53:00
我同意3楼
6 楼
QQ331373582 [专家分:1500] 发布于 2005-09-08 19:54:00
我打错了
7 楼
QQ331373582 [专家分:1500] 发布于 2005-09-08 19:56:00
我有一个方法,只循环9的3次方
方法如下:
var a,b,c:integer;
begin
for a:=1 to 9 do
for b:=1 to 9 do
for c:=1 to 9 do begin
if(100*a+10*b+c=a*a*a+b*b*b+c*c*c)then writeln(a,b,c);
end.
8 楼
QQ331373582 [专家分:1500] 发布于 2005-09-08 19:58:00
引用sansan33:
1楼的朋友这段我不太明白,为什么是这样,能告诉我吗?if(x mod 11=0)and(b+c=a)and(a<>b)and(a<>c)and(a<>d)and
(b<>c)and(b<>d)and(c<>d)and(((sqrt(10*b+c))-trunc(sqrt(10*b+c)))=0)
then writeln(x);
我打了另外一题了,我选错了题目
我来回复