习题4-6 水仙花数 关于测试点运行超时问题
习题4-6 水仙花数 (20分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
例如:153=1^3 + 5^3 + 3^3
本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
# include <stdio.h>
int pow(int a,int b) //需要自己定义pow 函数,直接调用math库中的 pow 函数会运行超时,这点我不懂.......
{
int t = a,i;
for(i=1; i<b; i++)
a = a*t;
return a;
}
int main (void)
{
int N;
scanf("%d",&N);
int i;
for(i=pow(10,N-1); i<pow(10,N); i++) // 比如 N=3,从100开始,到999结束
{
int sum = 0;
int j = i;
while(j != 0)
{
int w = j%10; // w是最后一位数字
j = j/10; // j 除以 10,下次计算倒数第二位,以此类推
sum += pow(w,N);
}
if(sum == i)
printf("%d\n",i);
}
return 0;
}
库函数里的函数不是都是经过好几次优化的嘛,黑人问号脸???