【题目】
题目详情
高斯在上小学时发明了等差数列求和公式: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
【分析】
详细详见:
【代码】
/********************************** 日期:2014-04-26* 作者:SJF0115* 题目: 高斯公式* 来源:http://hero.csdn.net/Question/Details?ID=537&ExamID=532* 结果:AC* 来源:庞果网* 总结:**********************************/#include#include using namespace std;int main(){ int n,i; while(scanf("%d",&n) != EOF){ int small = 1; int big = 2; int mid = (1 + n) / 2; int count = 0; int cur = small + big; while(small < mid){ //cur = n if(cur == n){ count ++; } //cur > n while(cur > n && small < mid){ cur -= small; small ++; if(cur == n){ count++; } }//while //cur < n big ++; cur += big; }//while printf("%d\n",count+1); } return 0;}