csdn程式設計練習之高斯公式

2021-06-29 04:27:59 字數 942 閱讀 5007

題目詳情:

高斯在上小學時發明了等差數列求和公式:1+2+..+100=5050。現在問題在於給你乙個正整數n,問你他可以表示為多少種連續正整數之和?(自身也算)。

輸入格式:

多組資料,每組資料一行,乙個正整數n。 0

輸出格式:

每組資料一行,包含乙個正整數,表示結果。

答題說明

輸入樣例

5120

輸出樣例:24

解釋:5=2+3=5

120=1+2+...+15=22+23+24+25+26=39+40+41=120

首先我們來看幾個簡單的例子:9=2+3+4;或9=4+5;

21=1+2+3+4+5+6 或 21=6+7+8 或 21= 10+11;

通過上面的例子可以發現,乙個可分解的數如9,可表示成:9=9/3*3=3*3;或9=9/2*2=4.5*2;(項數是奇數時,平均數是整數,項數是偶數時,平均數+0.5是整數);

可總結為,乙個可以分解成m個連續的正整數相加的正整數n,它的平均數是n/m。

所以,n可以表示為n=n/m*m; 其中,當m為偶數時,n/m+0.5必須為整數,m為奇數時,n/m必須為整數。

因此,我們只需要統計出滿足上述條件的m和n/m即可求出共有多少種分解方法。

m的值從1開始判斷,直到m>=sqrt(2*n)時停止。為什麼是sqrt(2*n),這個應該清楚吧,因為s=1+2+....+n=(n+1)n/2;放縮一下就是根號2*n了;

**如下:

#include#includeusing namespace std;

__int64 len(__int64 n)

int isint(double n)

int main()

printf("%i64d\n",num);

}return 0;

}

csdn程式設計練習之回文距離

題目詳情 njzy在對回文數的學習過程中發現了乙個有趣的問題.這個問題是求乙個數的回文距離。乙個數的回文距離的定義是它減去乙個回文數的絕對值的最小值。比如 121的回文距離就是0,因為 121 121 0,123的回文距離是2,123 121 2 輸入描述 輸入包含多組測試資料,每組測試資料報含乙個...

Python之高階程式設計

1 給class繫結屬性 方便所有物件使用 2 使用 slote 變數 限制繫結屬性 slots name age 用tuple定義允許繫結的屬性名稱 子類例項允許定義的屬性就是自身的 slots 加上父類的 slots 3 property class student object propert...

爬蟲練習 CSDN部落格歸檔

獲取指定網頁的頁面資訊 headers try 如果響應的狀態碼為404並不會丟擲一場,那麼如何讓處理?response requests.get url,headers headers response.raise for status 如果返回的狀態碼不是200,那麼丟擲異常 except ex...