黑马程序员技术交流社区

标题: 关于水仙花数的问题 [打印本页]

作者: coding_wang    时间: 2015-9-1 23:19
标题: 关于水仙花数的问题
本帖最后由 coding_wang 于 2015-9-3 11:13 编辑

题目要求 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

这个题目要按照什么样的思路去解决呢?
作者: 张中付    时间: 2015-9-1 23:30
看人家例子怎么搞的,你要娶学着搞,取它的各位数字153/100 = 1 153%100 = 53 53/10 = 5等等  
作者: kylmetz    时间: 2015-9-1 23:41
我也同求~
作者: wowthe1st    时间: 2015-9-2 00:31
就是从100循环到999,循环体中判断当前数值是否符合要求;
取每位上的数值,这个思路两个个:
1> 将数对10取余后得出个为,除以10将结果再对10取余得到十位,以此下去直到原来数为0
2>将数值转化成字符串,然后字符串每个字符迭代(这个效率不高)


代码:

  1. int main()
  2. {
  3.         int i,j,k,sum;
  4.         for(i=100;i<=999;i++)
  5.         {
  6.                 j=i;
  7.                 sum=0;
  8.                 for(;j;j/=10)
  9.                 {
  10.                         k=j%10;
  11.                         sum+=k*k*k;
  12.                 }
  13.                        
  14.                 if(sum==i)
  15.                         printf("%d 是水仙花数\n",i);
  16.         }
  17.         return 0;
  18. }
复制代码

作者: smilejoke    时间: 2015-9-2 00:39
善用取余,除法  这都是基本算法
作者: 来自星星    时间: 2015-9-2 09:15
没有学过或是学到,就进来学习学习
作者: veggiegfei    时间: 2015-9-2 09:25
思维逻辑好强的这题
作者: GodLovenan    时间: 2015-9-2 11:19
好高端的样子啊,没有学到这呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2