整數分解為2的冪 數學

2022-07-29 03:15:14 字數 1063 閱讀 7337

任何正整數都能分解成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 1000000007sample input

7
sample output

6

找規律

#include#include

using

namespace

std;

//每個點最多翻轉一次

const

int maxn = 1e6 + 3

;#define inf 0x3f3f3f3f

/*ans(k) = ans(k-1)+ ans(k-2) + ans(k-4)

*/int

a[maxn];

intmain()

ios::sync_with_stdio(0);

intn;

while(cin>>n)

cout

}

#include

#include

using

namespace

std;

//每個點最多翻轉一次

const

intmaxn =

1e6+ 3;

#define inf 0x3f3f3f3f

/*ans(k) = ans(k-1)+ ans(k-2) + ans(k-4)

*/int

a[maxn];

intmain

() ios::sync_with_stdio(0);

intn;

while

(cin

>>n)

cout

1383 整數分解為2的冪

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

整數分解為2的冪(遞迴)C語言

最近遇到這樣的一道題,用到了遞迴,採用兩種辦法實現,第一種超時,第二種滿足要求。演算法小白也算是遞迴有了乙個初探。題目如下 乙個正整數可以表示為多個正整數相加的表示式,表示式中的各個正整數要求都是2的冪。例如給定正整數7,它有下列六個符合要求的表示式 1 1 1 1 1 1 1 1 2 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 看到這題就是乙個遞推題,...