閱讀293 返回首頁    go 阿裏雲 go 技術社區[雲棲]


龐果網之高斯公式

【題目】

題目詳情

高斯在上小學時發明了等差數列求和公式: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

  上一篇:go NYOJ311-完全背包
  下一篇:go 遊戲素材網站大全