打印输出1~9999以内的所有满足水仙花数(Narcissistic number)条件的数,要求数字之间用逗号分隔,且每输出2个数换一行。所谓水仙花数即数的每位组成数字的立方的和等于这个数本身。
水仙花数
112=1^3+1^3+2^3;
234 = 2^3 + 3^3 + 4^3
1254 =1^3 + 2^3 +5^3 +4^3
#include<stdio.h>
#include<math.h>
int main()
{
int i = 1;
for (i = 1; i <= 9999; i++)
{
int count = 0, a = 0,sum=0;//在每个循环的开始需要初始化识别数字位数
a = i;//防止i变化导致程序混乱
while (a != 0)
{
a = a / 10;
count++;
}
//确定i的位数
a = i;//重新赋值,开始使用i
while (a != 0)
{
sum += pow((double)(a%10), (double)count);//使用pow函数,用while函数求每一位数次方之和
a = a / 10;//开始计算下一位数
}
if (sum == i)//判定结果
{
printf("%d\n", i);
}
}
return 0;
}
112=1^3+1^3+2^3;
234 = 2^3 + 3^3 + 4^3
1254 =1^3 + 2^3 +5^3 +4^3
这几个等式不成立啊?
判断给定的三位数是否 水仙花 数。所谓 水仙花 数是指其值等于它本身 每位数字立方和的数。例 153 就是一个 水仙花 数。 153=13+53+3^3
输入格式
一个整数。
输出格式
是水仙花数,输出"YES",否则输出"NO"(不包括引号)
例子
样例输入
123
样例输出
NO
提示
数据规模和约定
一个三位的整数,否则输出"NO"