水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
我的代码可以实现上述要求啊,但是当n最大时,在vs中是可以运行出来的,但在pta上会显示运行超时,拿不到满分呜呜,有大佬帮忙纠正一下吗
#include<stdio.h>
#include<math.h>
int main() {
int n, x,i=0, a=0,b=0;
scanf("%d", &n);
int arr[7] = { 0 };
for (x = pow(10, n - 1);x < pow(10, n);x++) {
b = x;
i = 0;
while(i < n) {
arr[i] = b % 10;
b /= 10;
i++;
}
a = 0;
for (int j = 0;j < n;j++) {
a += pow(arr[j], n);
}
if (a == x)
printf("%d\n", x);
}
return 0;
}
编译器
C (gcc)
内存
368 / 65536 KB
用时
2500 / 2500 ms
状态
部分正确
分数
17 / 20
评测时间
2024/04/04 20:09:43
评测详情
测试点 | 提示 | 内存(KB) | 用时(ms) | 结果 | 得分 | |
0 | sample等价, 4 | 368 | 4 | 答案正确 | 11 / 11 | |
1 | 6, 只有1个 | 360 | 345 | 答案正确 | 3 / 3 | |
2 | N==5 | 184 | 32 | 答案正确 | 3 / 3 | |
3 | 最大N,输出4个 | 188 | 2500 | 运行超时 | 0 / 3 |