51nod 1383 整數分解為2的冪

2021-08-01 05:53:48 字數 856 閱讀 6736

畫畫,找規律。。。

dp[n]表示n的劃分方法。

當n為奇數的時候,dp[n]=dp[n-1],n-1每種分解後邊都加上乙個1就是了。

當n為偶數的時候,dp[n]=dp[n-1]+dp[n/2],n-1的每種分解都加乙個1,這是一種情況,因為n是偶數,還有把1合併成2,把2合併成4的情況,這時候多出的這部分分解後的最小單位是2,分解個數最多的就是n/2個2,把這些數字全部都除以2,正好就是n/2的分解情況。

4=1 1 1 1

1 1 2

2 2

4 7=1 1 1 1 1 1 1 –

1 1 1 1 1 2 –

1 1 1 2 2 –

1 1 1 4 –

1 2 2 2 –

1 2 4 –

//後邊帶–的是7的分解+1的情況

8=1 1 1 1 1 1 1 1 –

1 1 1 1 1 1 2 –

1 1 1 1 2 2 –

1 1 2 2 2 –

1 1 1 1 4 –

1 1 2 4 –

//這裡的都除以2是4的分解情況

2 2 2 2

2 2 4

4 4

8

#include 

#include

const

int maxn = 1e6+1;

const

int mod = 1e9+7;

int dp[maxn];

int main()

printf("%d\n",dp[n]);

return

0;}

51Nod 1383 整數分解為2的冪

任何正整數都能分解成2的冪,給定整數n,求n的此類劃分方法的數量!由於方案數量較大,輸出mod 1000000007的結果。比如n 7時,共有6種劃分方法。7 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 2 1 2 2 2 1 1 1 4 1 2 4 看到這題就是乙個遞推題,...

51nod 1383 整數分解為2的冪

1383 整數分解為2的冪 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 任何正整數都能分解成2的冪,給定整數n,求n的此類劃分方法的數量!由於方案數量較大,輸出mod 1000000007的結果。比如n 7時,共有6種劃分方法。7 1 1 1 1 1 1 1 ...

51NOD 1383 整數分解為2的冪

任何正整數都能分解成2的冪,給定整數n,求n的此類劃分方法的數量!由於方案數量較大,輸出mod 1000000007的結果。比如n 7時,共有6種劃分方法。7 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 2 1 2 2 2 1 1 1 4 1 2 4 input 輸入乙個數n...