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