hiho一下第292周《SCI表示法》题目分析

5
0

本题是一道比较简单的枚举题。

假设连续正整数的首项是a,项数是m。根据等差数列求和公式有:

(a + a + m - 1) * m / 2 = n

也就是

(2a+m-1) * m = 2n

所以m一定是2n的约数。

于是我们可以枚举2n的每一个约数(由于约数都是成对出现的,所以只需要枚举到sqrt(2n)即可) ,然后判断对应的a是否存在正整数解。

最后从所有解中找出m最大值即可。

1 answer(s)

0

include using namespace std;

include

include

void deal() { int n; cin>>n; int sum=0; int ans; for (int i=sqrt(2*n);i>=1;i--) { if (2*n%i==0) { //cout<>t; for (int i=1;i<=t;i++) { deal(); } return 0; }

write answer 切换为英文 切换为中文


转发分享