判断整数m是不是水仙花数:输入一个位数不多于10位的正整数m,判断m是不是水仙花数。
水仙花数:例如输入的m是一个5位数,如果个、十、百、千、万的5次方和等于m,则m是一个5位水仙花数。
输入格式:
输入一个位数不多于10位的正整数。
输出格式:
输入该数是或者不是水仙花数。
输入样例:
在这里给出两组输入。例如:
153
1666
输出样例:
在这里给出相应的两组输出。例如:
153是水仙花数
1666不是水仙花数
#include <stdio.h>
#include <math.h>
int main()
{
long m,n,sum=0;
int i=0,a;
scanf("%ld", &m);
n = m;
//计算m的位数
for(;n>0;i++)
n/=10;//分离个位数
n = m;
while(n>0)
{
a=n%10;
sum+=pow(a,i);//计算每个位上的数字的i次方和
n/=10;
}
if (sum==m) {
printf("%ld是水仙花数\n", m);
} else {
printf("%ld不是水仙花数\n", m);
}
return 0;
}