LeetCode 829. 连续整数求和
时间:2022-10-20 03:30:00
829. 连续整数求和
等差数列求和公式
// (a1 an) * n / 2 = x an = a1 n - 1
// (2a1 n - 1) * n= x * 2 所以将2*x分解因数得到i和j
// 2a1 n - 1 = i && n = j
// 2a1 j - 1 = i;
// a1 = (i - j 1) / 2; 验证a1是否成立即可
class Solution { public int consecutiveNumbersSum(int n) { // (a1 an) * (an - a1 1) / 2 = x // (a1 an) * (an - a1 1) = 2 * x // (2a1 n - 1) * n / = 2 * x // 2a1 n - 1 = i && n = j // 2a1 j - 1 = i; // a1 = (i - j 1) / 2; int ans = 0; n <<= 1; int m = (int)Math.sqrt(n); for(var i = 1; i <= m; i ){ if(n % i == 0){ int j = n / i; if((j - i 1) % 2 == 0) ans ; } } return ans; } }