P6267 [SHOI2002]N的连续数拆分

题目

题目

思路

显然根据一些小学知识,我们可以枚举首项+末项,只需要枚举到 2 ∗ n \sqrt{2*n} 2n 即可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;
}

猜你喜欢

转载自blog.csdn.net/weixin_49843717/article/details/113809976
今日推荐