庞果网之高斯公式
【题目】
题目详情
高斯在上小学时发明了等差数列求和公式: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 * 题目: 高斯公式 * 来源:https://hero.csdn.net/Question/Details?ID=537&ExamID=532 * 结果:AC * 来源:庞果网 * 总结: **********************************/ #include <iostream> #include <stdio.h> 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; }
最后更新:2017-04-03 12:56:25