高斯公式
题目详情:
高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。
输入格式:
多组数据,每组数据一行,一个正整数n。 0<n<2000000000
输出格式:
每组数据一行,包含一个正整数,表示结果。
答题说明:
输入样例
5
120
输出样例:
2
4
解释:
5=2+3=5
120=1+2+...+15=22+23+24+25+26=39+40+41=120
#include
#include
long long n;
void bin()
{
long long low,high,mid,sum;
low=1;
high=n;
while(low<=high)
{
mid=(low+high)/2;
if(mid*(mid+1)/2>n)
high=mid-1;
else
low=mid+1;
}
printf("%lld\n",high);
}
int main()
{
scanf("%d",&n);
bin();
return 0;
}