清華機試 整數拆分

2021-07-16 15:30:20 字數 895 閱讀 8400

題目描述

乙個整數總可以拆分為2的冪的和,例如: 7=1+2+4 7=1+2+2+2 7=1+1+1+4 7=1+1+1+2+2 7=1+1+1+1+1+2 7=1+1+1+1+1+1+1 總共有六種不同的拆分方式。 再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。 用f(n)表示n的不同拆分的種數,例如f(7)=6. 要求編寫程式,讀入n(不超過1000000),輸出f(n)%1000000000。

輸入描述

每組輸入包括乙個整數:n(1<=n<=1000000)。

輸出描述

對於每組資料,輸出f(n)%1000000000。

樣例輸入

7樣例輸出

6

//對於奇數n=2k+1:它的拆分的第一項一定是1,考慮去掉這個1,其實就對應於2k的拆分,因此f(2k+1)=f(2k).

//對於偶數n=2k:考慮有1和沒有1的拆分。有1的拆分,與(2k-1)的拆分對應,與上面奇數的情況理由相同;

//沒有1的拆分,將每項除以2,正好對應於k的所有拆分。因此f(2k)=f(2k-1)+f(k).

#include

#include

using

namespace

std;

const

int maxn = 1000001;

int num[maxn];

int main()

else

}int n;

while(cin >> n)

return

0;}

清華大學機試 整數拆分 需要二刷 完全揹包問題

基本思想 第一次見到完全揹包問題,並且這個揹包問題所描述的並非整體最大值的問題,而是放置次數的問題 很多案例沒有講出為神馬要這麼遍歷dp陣列,這裡說一下 1.首先,對於n個放置元素的確定,採用打表進行 2.dp 0 1,是為了邊界初始化,來保證dp 1 當放置元素為1時,可以正常進行初始化,值得注意...

清華機試oj 成績排序

題目 輸入任意 使用者,成績 序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。例示 jack 70 peter 96 tom 70 smith 67 從高到低 成績 peter 96 jack 70 tom 70 smith 67 從低到高 smith 67 to...

清華機試 質因數的個數

題目描述 求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。輸入描述 可能有多組測試資料,每組測試資料的輸入是乙個正整數n 1 10 9 輸出描述 對於每組資料,輸出n的質因數的個數。樣例輸入 120 樣例輸出 5 include inclu...