高斯公式
题目详情
高斯在上小学时发明了等差数列求和公式: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<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n){
int k=0,i=1;
for(int i=1;;i++){//思路来源于《短码之美》50页
if(n%i==0) k++;
n=n-i;
if(n<=0) break;
}
cout<<k<<endl;
}
return 0;
}
using namespace std;
int main()
{
int n;
while(cin>>n){
int k=0,i=1;
for(int i=1;;i++){//思路来源于《短码之美》50页
if(n%i==0) k++;
n=n-i;
if(n<=0) break;
}
cout<<k<<endl;
}
return 0;
}