E3658.奇数和与偶数和的最大公约数
math, https://leetcode.cn/problems/gcd-of-odd-and-even-sums/
给你一个整数 n。请你计算以下两个值的 最大公约数(GCD):
sumOdd:最小的n个正奇数的总和。sumEven:最小的n个正偶数的总和。
返回 sumOdd 和 sumEven 的 GCD。
示例 1:
输入: n = 4
输出: 4
解释:
- 前 4 个奇数的总和
sumOdd = 1 + 3 + 5 + 7 = 16 - 前 4 个偶数的总和
sumEven = 2 + 4 + 6 + 8 = 20
因此,GCD(sumOdd, sumEven) = GCD(16, 20) = 4。
示例 2:
输入: n = 5
输出: 5
解释:
- 前 5 个奇数的总和
sumOdd = 1 + 3 + 5 + 7 + 9 = 25 - 前 5 个偶数的总和
sumEven = 2 + 4 + 6 + 8 + 10 = 30
因此,GCD(sumOdd, sumEven) = GCD(25, 30) = 5。
提示:
1 <= n <= 1000
方法分析
我们可以通过数学公式来推导首
最小的
个正奇数的总和 : 前 个奇数分别为 。 其和为等差数列求和公式: 最小的
个正偶数的总和 : 前 个偶数分别为 。 其和同样可以使用求和公式:
根据最大公约数(GCD)的性质,我们可以提取公共公因数:
由于
因为
所以:
因此,对于任意的正整数
Python 代码实现
python
class Solution:
def gcdOfOddEvenSums(self, n: int) -> int:
return n复杂度分析
- 时间复杂度:
,只需直接返回 。 - 空间复杂度:
,不需要额外的辅助空间。