[C语言]有时候能不用函数尽量不要用函数 | 祭夜博客
  • 欢迎光临,这个博客颜色有点多

[C语言]有时候能不用函数尽量不要用函数

C/C++ msojocs 5年前 (2019-10-30) 2426次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

前言

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

[C语言]有时候能不用函数尽量不要用函数

一直报超时:

[C语言]有时候能不用函数尽量不要用函数

MDZZ #(怒)

思路

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

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

emm……

[C语言]有时候能不用函数尽量不要用函数

它过了,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;
}

总结

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


祭夜の咖啡馆 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[C语言]有时候能不用函数尽量不要用函数
喜欢 (1)
[1690127128@qq.com]
分享 (0)
发表我的评论
取消评论
OwO表情
贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址