前言
刚刚做PTA,就这垃圾题目:
一直报超时:
MDZZ
思路
想想郝斌老师说的系统调用函数时会为函数分配空间,这个过程是耗时的,而我有偷懒使用了pow函数,
所以,猜想是这个原因导致超时的,于是把pow换成for循环进行求解,
emm……
它过了,WC
,这太坑了
贴代码
调用函数:#include
#include
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
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
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
temp = temp*a[j];
sum += temp;
}
if (i == sum)
{
printf("%d\n", i);
}
}
return 0;
}
总结
有时候有没有必要用函数需要考虑考虑,具体怎么考虑暂时不知道。。。
祭夜の咖啡馆 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[C语言]有时候能不用函数尽量不要用函数