置頂

GeoGebra 文章目錄

GeoGebra 文章目錄  更新日期:2018/2/8 我將 GeoGebra 相關的文章及檔案連結都整理在這篇裡,之後如果有新的文章也會同時更新這個目錄。上傳到 GeoGebraTube 的檔案,我有試著用 Google Chrome 63.0.3239.13...

熱門文章

2026年7月15日 星期三

LeetCode 解題筆記:3658. GCD of Odd and Even Sums

作者:王一哲
日期:2026年7月15日


LeetCode 題目連結:3658. GCD of Odd and Even Sums

解題想法


簡單題。這題考數學,直接回傳 $n$ 即可。前 $n$ 個正的奇數和為 $$ sumOdd = 1 + 3 + 5 + \dots + (2n - 1) = \frac{(2n - 1 + 1) \times n}{2} = n^2 $$ 前 $n$ 個正的偶數和為 $$ sumEven = 2 + 4 + 6 + \dots + 2n = \frac{(2n + 2) \times n}{2} = n(n+1) $$ 因為 $n$ 與 $n+1$ 的最大公因數為 $1$,因此 $sumOdd$ 與 $sumEven$ 的最大公因數為 $n$。

如果沒有想到以上的數學性質,真的用迴圈算出 $sumOdd$ 與 $sumEven$ 的值再取最大公因數也可能,因為題目的 $n$ 最大為 $1000$,很快就能算完。

Python 程式碼


Runtime: 0 ms, beats 100.00%. Memory: 19.18 MB, beats 85.77%.
class Solution:
    def gcdOfOddEvenSums(self, n: int) -> int:
        return n

Runtime: 11 ms, beats 38.21%. Memory: 19.24 MB, beats 53.03%.
class Solution:
    def gcdOfOddEvenSums(self, n: int) -> int:
        sumOdd = sum(range(1, 2*n, 2))
        sumEven = sum(range(2, 2*n + 1, 2))
        return gcd(sumOdd, sumEven)


C++ 程式碼


Runtime: 0 ms, beats 100.00%. Memory: 8.52 MB, beats 46.67%.
class Solution {
public:
    int gcdOfOddEvenSums(int n) {
        return n;
    }
};

Runtime: 0 ms, beats 100.00%. Memory: 8.48 MB, beats 85.02%.
class Solution {
public:
    int gcdOfOddEvenSums(int n) {
        int sumOdd = 0, sumEven = 0;
        for(int i = 1; i < 2*n; i += 2) sumOdd += i;
        for(int i = 2; i <= 2*n; i += 2) sumEven += i;
        return gcd(sumOdd, sumEven);
    }
};


C 語言程式碼


Runtime: 0 ms, beats 100.00%. Memory: 9.13 MB, beats 16.92%.
int gcdOfOddEvenSums(int n) {
    return n;
}

Runtime: 0 ms, beats 100.00%. Memory: 9.00 MB, beats 89.62%.
int gcd(int a, int b) {
    int r;
    while(b > 0) {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int gcdOfOddEvenSums(int n) {
    int sumOdd = 0, sumEven = 0;
    for(int i = 1; i < 2*n; i += 2) sumOdd += i;
    for(int i = 2; i <= 2*n; i += 2) sumEven += i;
    return gcd(sumOdd, sumEven);
}


沒有留言:

張貼留言