龐果網之高斯公式
【題目】
題目詳情
高斯在上小學時發明了等差數列求和公式: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