題意:
給乙個數n,求用2的t次方的數來加成這個數,能有幾種方法。
結果對1e9取模。
e.g:
7可以有以下6種加法:
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
解析:當i為奇數的時候:
dp[i] = dp[i - 1]
就是直接+個1就到當前情況了;
當i為偶數的時候:
dp[i] = dp[i - 1] + dp[i>>1]
意思是當i為偶數的時候,拆成乙個奇數,還是拆成原來的偶數。
若拆成奇數+1到達當前,則=dp[i - 1],若拆成偶數相加到當前i,則相當於i/2的方案數。
**:
#include #include #include #include #include #include #include #include #include #include #include #include #define ll long long
#define lson lo, mi, rt << 1
#define rson mi + 1, hi, rt << 1 | 1
using namespace std;
const int maxn = 1e6 + 10;
const int inf = 0x3f3f3f3f;
const double eps = 1e-8;
const double pi = acos(-1.0);
const double ee = exp(1.0);
ll dp[maxn];
void init()
else
}}int main()
return 0;
}
poj 1953 dp 無連續1的01串個數
題意 問長度為n的無連續1出現的01串有多少個?思路 簡單dp。思路1 dp i 0 表示以0結尾長度為i的串的個數 dp i 1 表示以1結尾長度為i的串的個數。則轉移方程為dp i 0 dp i 1 0 dp i 1 1 和dp i 1 dp i 1 0 最終對於長度為n的串輸出dp n 0 d...
求某個數的整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不需要考慮溢位。這裡直接求解的 應該不難寫,這裡先考慮比較簡單的情況,即base非0,exponent大於0。當然,有更好的解法,不然就不寫這blog了。更好的解法是基於下面的...
POJ 2676 整數的個數
時間限制 1000ms 記憶體限制 65536kb 描述給定k 1輸入 輸入有兩行 第一行包含乙個正整數k,第二行包含k個正整數,每兩個正整數用乙個空格分開。輸出輸出有三行,第一行為1出現的次數,第二行為5出現的次數,第三行為10出現的次數。樣例輸入 51 5 8 10 5樣例輸出 121 1 源 ...