如果一个n位数的每个数位的n次方和就是本身,那么我们称这种数为“水仙花数”。比如371,33+73+13=27+343+1 = 371。现给你一个数,请求这个数是否是水仙花数。
输入
有多组样例。每个样例占一行,为一个整数a(1<=a <=1,000,000),如果a为 0,那么表示输入结束,这个样例不需要处理。
输出
每行输出一个样例的结果,如果是就输出“Yes”,否则输出“No”。
整体思路
1 获得这个数的位数个数sum
2 得到这个数的每一位
3 将每一位进行幂运算操作并将结果保存
#include <stdio.h>
#include <math.h>
int main()
{
int sum = 0;
int n;
int tot = 0;
int i;
int x;
while (scanf("%d", &n), n != 0)
{
int k = n;
int j = n;
//判断一个数有几位
while (k != 0)
{
k = k / 10;
sum++;
}
for (i = 0; i < sum; i++)
{
x = n % 10; //x表示n的个位并依次位数增加
tot += pow(x, sum); //用tot存储每个位的计算结果并累加
n /= 10; //将n进行小数点左移的操作
}
if (tot == j)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
//初始化操作
sum = 0;
tot = 0;
}
}
如果你喜欢的话记得点赞收藏哦