A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© coding_wang 中级黑马   /  2015-9-1 23:19  /  1146 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 coding_wang 于 2015-9-3 11:13 编辑

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

这个题目要按照什么样的思路去解决呢?

7 个回复

倒序浏览
看人家例子怎么搞的,你要娶学着搞,取它的各位数字153/100 = 1 153%100 = 53 53/10 = 5等等  
回复 使用道具 举报
我也同求~
回复 使用道具 举报
就是从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. }
复制代码
回复 使用道具 举报
善用取余,除法  这都是基本算法
回复 使用道具 举报
没有学过或是学到,就进来学习学习
回复 使用道具 举报
思维逻辑好强的这题
回复 使用道具 举报
好高端的样子啊,没有学到这呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马