繁繁的數字

2021-10-05 10:22:47 字數 736 閱讀 6547

題目描述

繁繁今天學習了二進位制,繁繁覺得二進位制很神奇,任何乙個整數都可以由一些互不相同的2的方冪表示,例如7的二進位制是111

2,所以7=4+2+1,繁繁不滿足於此,繁繁在想,如果把互不相同這個條件去掉,會有多少種方案呢?

輸入 一行乙個整數n(1<=n<=1000000)

輸出 乙個乙個數,表示答案對1000000007取模的結果

樣例輸入 copy

7

樣例輸出 copy

6

提示對於樣例1,7=4+2+1=4+1+1+1=2+2+2+1=2+2+1+1+1=2+1+1+1+1+1=1+1+1+1+1+1+1,6種方案。

對於30%的資料,n<=300

對於50%的資料,n<=10000

對於100%的資料,1<=n<=1000000

ps:就是乙個完全揹包,一直沒想到。。。

#include using namespace std;

const int mod = 1000000007;

const int maxn = 1e6+10;

long long dp[maxn];

int a[21] =;

int main()

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

return 0;

}

繁繁的數字 揹包DP

問乙個數 n 有多少種二進位制分解方案數 n le 10 5 如7有7 4 2 1 4 1 1 1 2 2 2 1 2 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1,共6種方案 一眼完全揹包,將 2 0,2 1 cdots 等看成 log n 個物品,每個物品無限件,揹包體積為...

繁繁的遊戲

題目描述繁繁想和小夥伴們打遊戲,遊戲在乙個山莊進行,這個山莊有n座山,編號為1到n,為了方便大家在不同的山之間移動,繁繁建了一些橋,由於技術的原因,橋連線的兩座山的高度差不能超過d,現在已知這些橋,求這個山莊最高的山和最低的山差距最大是多少?資料保證所有山之間都是聯通的。輸入第乙個乙個數t,表示測試...

繁繁的佇列

題目描述繁繁有乙個雙向佇列,佇列裡有數字1 n這n個數字,繁繁每次可以從佇列中任意拿出乙個數字,將其放在佇列的頭部或者佇列的尾部,不停這樣操作,直到佇列變成公升序,求最小操作次數。輸入第一行乙個數字n n 50000 接下來n行,每行乙個數字 輸出乙個數表示最小操作次數樣例輸入525 341樣例輸出...