题目
题目
思路
显然根据一些小学知识,我们可以枚举首项+末项,只需要枚举到 2 ∗ n \sqrt{2*n} 2∗n
即可O(1)求解是否存在解。
code:
#include<iostream>
using namespace std;
int main()
{
long long n,s=1,y,i;
cin>>n;
n*=2;
for (i=2;i*i<=n;i++)
{
if (n%i!=0) continue;
y=n/i;
if (i%2^y%2) s++;
}
cout<<s;
return 0;
}