洛谷P8039题解
题目描述
求出所有的和为
题解
设这一段的最小值为
由等差数列求和公式有
将
对
因为
这时候只需要判断
时间复杂度
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,x;
int main()
{
scanf("%lld",&n);
if(n==1)
return 0;//特判
m=sqrt(n<<=1);
for(ll i=1;i<=m;i++)//根号枚举因数
{
if(n%i)
continue;
x=n/i;
if((x%2)!=(i%2)&&x-i+1!=x+i-1)//符合条件
printf("%lld %lld\n",x-i+1>>1,x+i-1>>1);
}
return 0;
}