<span style="color: rgb(255, 0, 0); font-size: 24px;">这个题目已经在电脑上运行并且测试通过了,不知为何提交到网上总是报错(输出结果错误)?希望高手可以不吝赐教,指正错误。</span>
//
/*
高斯公式
题目详情:
高斯在上小学时发明了等差数列求和公式: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 "stdafx.h"
#include <iostream>
//#include <fstream>
using namespace std;
int main()
{
int n;
int sum;
int counter;
//ifstream cin("a.txt");
while(cin>>n)
{
counter=0;
for(int i=1;i<=(n/2+1);i++)
{
sum=0;//initial everytime
for(int j=i;j<=(n/2+1);j++)
{
if(sum<n)
sum+=j;
if(sum>n){
sum=0;
break;
}
if(sum==n)
{
counter++;
sum=0;
break;//得到结果后,
}
}
}
if(n==2||n==1||counter==0)//1和2以及只有本身的数要单独考虑,只有本身一种情况
cout<<1<<endl;
else if(counter!=0)
cout<<counter+1<<endl;
}
//system("pause");
return 0;
}