题解:一开始由<math.h>中的pow函数求次方,但是运行超时。改成自己写的pow函数即可。要记住一个细节,自己写的函数跟调用的函数相比,速度快很多,即便它们的功能一样。
tips:取余10和整除10得到各个位上的值
#include <stdio.h>
int pow(int m, int N)
{ // 求次方函数,自己写的比调用的速度快。
int i, ret;
ret = 1;
for (i = 0; i < N; i++)
ret *= m; // 有N次方,底数就乘N次。
return ret;
}
int main()
{
int N, i, temp, sum;
scanf("%d", &N);
for (i = pow(10, N - 1); i < pow(10, N); i++)
{
temp = i, sum = 0;
while (temp)
{ // 取各个位上的数。
sum += pow(temp % 10, N);
temp /= 10;
}
if (sum == i)
printf("%d\n", i);
}
return 0;
}