6. 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。本题要求编写程序,计算所有N位水仙花数。 输入格式:输入在一行中给出一个正整数N(3≤N≤7)。 输出格式:按
时间: 2023-11-29 10:44:12 浏览: 41
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。本题要求编写程序,计算所有N位水仙花数。
输入格式:输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
```c++
#include <stdio.h>
#include <math.h>
int Pow(int n,int m)//n 是次数 m是幂
{
int i, sum=1;
for (i=1; i<=n; i++)
sum *=m;
return sum;
}
void Solve(int n)
{
int i, j, a[10], flag;
int min, max, sum;
min = Pow(n-1,10);
max = Pow(n,10);
for (i=min; i<max; i++)
{
flag = i;
sum = 0;
for (j=0;j<n;j++)
{
a[j] = flag/Pow(n-j-1,10);
flag -= a[j]*Pow(n-j-1,10); //获取 110 -100 =10
sum += Pow(n,a[j]);
}
if (sum == i)
printf("%d\n", i);
};
}
int main(void)
{
int n;
scanf("%d", &n);
Solve(n);
return 0;
}
```