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