3034 數字拆分

2021-10-05 16:09:16 字數 1028 閱讀 1912

單點時限: 2.0 sec

記憶體限制: 256 mb

將乙個正整數拆分為成 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 (1≤n≤1000000),輸出 f(n)。

輸入格式

第 1 行:乙個整數 t (1≤t≤10) 為問題數。

接下來 t 行,每行輸入乙個正整數 n(1≤n≤1000000)。

輸出格式

對於每個問題,輸出一行問題的編號(0 開始編號,格式:case #0: 等)。

然後對應每個問題在一行中輸出 f(n)。

樣例input37

946output

case #0:

6case #1:

10case #2:

598

/*

思路:dp

i為奇數是只能是前乙個數加一得到,個數為dp[i-1]。

i為偶數是可以是前乙個數加1,也可以是前i/2個數乘以2,總個數為dp[i-1]+dp[i/2]

*/#include

int max=

1000001

;int

main()

;int i, j, n;

ans[0]

=1; ans[1]

=1;for

(i=2

; i<

1000001

; i++

)scanf

("%d"

,&n)

;for

(i=0

; i)return0;

}

HAOI2015 數字串拆分

你有乙個長度為n的數字串。定義f s 為將s拆分成若干個1 m的數的和的方案數,比如m 2時,f 4 5,分別為4 1 1 1 1你可以將這個數字串分割成若干個數字 允許前導0 將他們加起來,求f,並求和。比如g 123 f 1 2 3 f 1 23 f 12 3 f 123 已知字串和m後求答案對...

4037 HAOI2015 數字串拆分

time limit 10 sec memory limit 256 mb submit 255 solved 156 submit status discuss 你有乙個長度為n的數字串。定義f s 為將s拆分成若干個1 m的數的和的方案數,比如m 2時,f 4 5,分別為4 1 1 1 1你可以...

2014藍橋杯c組決賽 數字拆分

題目 正整數可以表示為若干正整數的累加和。如,對於正整數n 6,可以分劃為 65 1 4 24 1 1 3 33 2 1 3 1 1 1 2 2 2 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 現在的問題是,對於給定的正整數n,計算出所有劃分情況。下面的 實現了這個功能。仔細分析,填...