單點時限: 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,計算出所有劃分情況。下面的 實現了這個功能。仔細分析,填...