赞
踩
【题目呈现】
输出1100-999所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
【解法】
【解法一】
在已知范围内(100-999),我们可以通过遍历所有数字,并进行验证。
- #include<stdio.h>
- #include<math.h>
- int main(void)
- {
- for(int i = 100;i<1000;i++)
- {
- int hundreds = i/100;
- int tens = (i%100)/10;
- int unit = i%10;
- if(pow(hundreds,3)+pow(tens,3)+pow(unit,3)==i)
- printf("%d\n",i);
- }
- }
【解法二】
先通过三层嵌套循环找到水仙花数,再输出100-999之间的部分。
- #include<stdio.h>
- #include<math.h>
- int main(void)
- {
- for (int i=1;i<10;i++)
- {
- for (int j=0;j<10;j++)
- {
- for (int k=0;k<10;k++)
- {
- int num = pow(i,3)+pow(j,3)+pow(k,3);
- if (num<100) continue;
- else if(num>999) break;
- else if(num ==100*i+10*j+k)
- {
- printf("%d\n",num);
- }
- }
- }
- }
- }
【总结】
两种解法的思考起点不同,但在知道检索范围的情况下,【解法一】更加简洁。
如有错误,望批评指正!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。