请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。
例如:407=4×4×4+0×0×0+7×7×7。所以407就是一个特殊数。
输入:
正整数的位数n(n<=6)。
输出:
所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提示:"No output.”;若存在,则从小到大进行输出。
说明:
假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出中的1111、2222和9999并不是4位特殊数,只是格式样例):
1111
2222
9999
/*
请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。
例如:407=4×4×4+0×0×0+7×7×7。所以407就是一个特殊数。
输入:正整数的位数n(n<=6)。
输出:所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提示:"No output.”;若存在,则从小到大进行输出。
说明:
假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出中的1111、2222和9999并不是4位特殊数,只是格式样例):
1111
2222
9999
*/
# include<stdio.h>
# include<math.h>
int powe(int a, int n)
{
int var = 1;
for (int i = 0; i < n; i++)
{
var *= a; //TODO
}
return var;
}
int main()
{
int n;
scanf("%d", &n);
int temp = 0;
int num = 0;
for (int var = powe(10, n - 1),prime = var; prime < powe(10, n); prime++)
{
temp = 0;
var=prime;
while ( var > 0 )
{
temp += powe(var % 10, n);
var /= 10; //TODO
}
if (temp == prime)
{
printf("%d\n", prime);
num ++;
}
}
if (num == 0)
{
printf("No output.\n");//TODO
}
return 0;
}