51nod 1383 整數分解為2的冪

2021-08-14 22:43:39 字數 1008 閱讀 5349

1383 整數分解為2的冪

基準時間限制:1 秒 空間限制:131072 kb 分值: 80 

難度:5級演算法題

任何正整數都能分解成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(1 <= n <= 10^6)
output

輸出劃分方法的數量mod 1000000007
input示例

7
output示例

6
解析:

通過對前幾個數打表找規律

f[n]=f[n-1]  -----------------n%2==1

f[n]=f[n-1]+f[n/2]-----------n%2==0

**:#include

#include

#include

#include

#include

using namespace std;

const double pi = acos(-1.0);

typedef long long ll;

const ll maxn=1e6+5;

const ll mod=1000000007;

ll f[maxn];

void init()

}

int main()

{ll n;

init();

while(scanf("%d",&n)!=-1)

{cout<

flag:dp方法和母函式方法在寒假攻克

------------2018/1/23

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的冪

畫畫,找規律。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的情況,這時候多出的這部分分解後的最...

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...