回 帖 发 新 帖 刷新版面

主题:1111111

找出100到999之间的整数中所有等于它每位数字立方和的数.

回复列表 (共8个回复)

沙发

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 楼

1楼的人做得非常正确,但用循环结构做的题似乎很容易超时!!!
所以应当优化算法,否则数字一大就很多时间才能出一个结果!!!
[img]http://sports.sohu.com/upload/wallpapers/shaq_yao1024x768.jpg[/img]

4 楼

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 楼

我同意3楼

6 楼

我打错了

7 楼

我有一个方法,只循环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 楼

引用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);
我打了另外一题了,我选错了题目

我来回复

您尚未登录,请登录后再回复。点此登录或注册