前言
刚刚做PTA,就这垃圾题目:
一直报超时:
MDZZ #(怒)
思路
想想郝斌老师说的系统调用函数时会为函数分配空间,这个过程是耗时的,而我有偷懒使用了pow
函数,
所以,猜想是这个原因导致超时的,于是把pow
换成for
循环进行求解,
emm……
它过了,WC #(喷) ,这太坑了
贴代码
调用函数:
#include <stdio.h> #include <math.h> int main(void) { int N; int sum = 0,t,j; scanf("%d", &N); int a[N] = {0}; int max = pow( 10, N); for (int i = max / 10; i < max; i++) { sum = j = 0; t = i; //拆分每位上的数字 while(t) { a[j] = t % 10; t = t / 10; j++; } //计算幂的值 for (j = 0; j < N; j++) { sum += pow( a[j], N); } if (i == sum) { printf("%d\n", i); } } return 0; }
用循环替代函数:
#include <stdio.h> int main(void) { int N,temp = 1; int sum = 0,t,j,max = 1; scanf("%d", &N); int a[N] = {0}; for(j=0;j<N;j++) max = max*10; for (int i = max / 10; i < max; i++) { sum = j = 0; t = i; //拆分每位上的数字 while(t) { a[j] = t % 10; t = t / 10; j++; } //计算幂的值 for (j = 0; j < N; j++) { temp = 1; for(t=0;t<N;t++) temp = temp*a[j]; sum += temp; } if (i == sum) { printf("%d\n", i); } } return 0; }
总结
有时候有没有必要用函数需要考虑考虑,具体怎么考虑暂时不知道。。。 #(黑线)