本文主要是介绍呀呀呀呀呀,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {
public:int consecutiveNumbersSum(int n) {int ans=0;for(int k=1;n-(k-1)*k/2>0;k++){if((n-(k-1)*k/2)%k==0)ans++;}return ans;}
};
题目
class Solution {
public:int consecutiveNumbersSum(int N) {int res = 1;for (int i = 2; i < sqrt(2 * N); ++i) {if ((N - i * (i - 1) / 2) % i == 0) ++res;}return res;}
};
利用N=(x+1)+(x+2)+⋯+(x+k) = kx+k*(k+1)/2 ,
减去1累加到k的和后能被k整除,即得到了一组x,k; 再将公式转换为2N=k(2x+k+1) 可以得出k < 根号下2N,减少时间复杂度
这篇关于呀呀呀呀呀的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!