赞
踩
cocowy编程之旅
C语言编程实现
*题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。 现在要求计算出所以N位正整数的水仙花数。
输出示例:
153=1^3+ 5^3 +3^3; |
---|
从给出的题意中,我们可以得到隐含着的关键的几个信息。
1.遍历,若给出N=3,则从100-999进行遍历,故给出N位正整数时,我们应该要找到它进行遍历操作时的范围。
2.整数分解,将一位正整数分解,一次一次取它的/10的余数,然后进行N次幂操作。最后相加求和。值得注意的是,每次求和完毕后,应令sum求和的值重新归零。
3.N次幂求解,可以利用POW(x,y)函数也可以利用循环操作。
代码如下:
#include<stdio.h> #include<math.h> int main() { int i,n; int num=1; scanf("%d",&i); //N位正整数 for(n=2;n<=i;n++){ num*=10; } int b=0;//pow操作 //int b=1;//循环操作 int a,t,c;//N位正整数的余数 //printf("水仙花数为:%d",num); for(n=num;n<num*10;n++){//进行n为正整数遍历循环 t=n; int sum=0;//进行归零操作 while(t>0){ a=t%10; b=pow(a,i);//pow函数实现 // for(c=1;c<=i;c++){//for循环实现N此幂操作 // b*=a; // } sum+=b; t/=10; } //printf("sum:%d,n:%d\n",sum,n); if(sum==n) { printf("水仙花数为:%d\n",n); } } return 0; }
最后输出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。