扩展水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次方之和等于它本身。
。 要求编写程序,输出所有扩展水仙花数。
输入格式:
首先输入一个整数T(1<=T<10),表示测试组数;每组测试在一行上输入一个正整数N(3<=N<=7)。
输出格式:
对于每组测试,按递增顺序输出所有扩展水仙花数,每个数字占一行。
输入样例:
1
3
输出样例:
153
370
371
407
扩展水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次方之和等于它本身。
。 要求编写程序,输出所有扩展水仙花数。
输入格式:
首先输入一个整数T(1<=T<10),表示测试组数;每组测试在一行上输入一个正整数N(3<=N<=7)。
输出格式:
对于每组测试,按递增顺序输出所有扩展水仙花数,每个数字占一行。
输入样例:
1
3
输出样例:
153
370
371
407
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n, *narr;
scanf("%d", &n);
narr = (int *)calloc(n, sizeof(int));
for (int i = 0; i < n; i++)
{
scanf("%d", &narr[i]);
}
for (int i = 0; i < n; i++) //组
{
int start = pow(10, narr[i] - 1);
int end = pow(10, narr[i]) - 1;
for (int j = start; j <= end; j++) //数
{
int sum = 0, nx = j, x;
while (nx > 0)
{
x = nx % 10;
sum += pow(x, narr[i]);
nx /= 10;
}
if (sum == j)
{
printf("%d\n", j);
}
}
}
return 0;
}