c语言不用但癖好,[C语言]有时候能不用函数尽量不要用函数 | 祭夜の咖啡馆

前言

刚刚做PTA,就这垃圾题目:

3953.air

一直报超时:

3953.air

MDZZ

febafa1c13ef6af149dc2b10513de1be.png

思路

想想郝斌老师说的系统调用函数时会为函数分配空间,这个过程是耗时的,而我有偷懒使用了pow函数,

所以,猜想是这个原因导致超时的,于是把pow换成for循环进行求解,

emm……

3953.air

它过了,WC

004488bd471ad6bc9fa98d98233b41b9.png  ,这太坑了

贴代码

调用函数:#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;

}

总结

有时候有没有必要用函数需要考虑考虑,具体怎么考虑暂时不知道。。。

30f5b377e40470cdad762945c76a94a5.png

祭夜の咖啡馆 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:[C语言]有时候能不用函数尽量不要用函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值