gxworkinghard 2023-04-10 22:46 采纳率: 37.5%
浏览 25

函数求值(数据过大时会超时)

img

img


奇数的最大公因数就是本身,用求和公式直接相加,偶数用循环找出最大因子。
但这样会提交会超时。希望各位帮忙看看

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2023-04-10 23:32
    关注

    以下内容部分参考ChatGPT模型:


    对于数据过大时会超时的情况,可以考虑优化算法。对于偶数,可以使用更快的算法,如辗转相除法或欧几里得算法来求最大公因数。对于奇数,可以直接相加而不需要使用循环。同时,可以使用long long类型来避免数据溢出。

    以下是优化后的代码示例:

    #include <stdio.h>
    
    long long gcd(long long a, long long b) {
        if (b == 0) {
            return a;
        }
        return gcd(b, a % b);
    }
    
    int main() {
        int n;
        scanf("%d", &n);
    
        long long sum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 0) {
                long long max_factor = 0;
                for (long long j = 1; j * j <= i; j++) {
                    if (i % j == 0) {
                        if (j % 2 == 1 && j > max_factor) {
                            max_factor = j;
                        }
                        if ((i / j) % 2 == 1 && (i / j) > max_factor) {
                            max_factor = i / j;
                        }
                    }
                }
                sum += max_factor;
            } else {
                sum += i;
            }
        }
    
        printf("%lld\n", sum);
        return 0;
    }
    

    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    评论

报告相同问题?

问题事件

  • 创建了问题 4月10日

悬赏问题

  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成
  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!
  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.