AcWing 1081 度的數量

2022-07-09 06:18:10 字數 994 閱讀 2134

度的數量

求給定區間 \([x,y]\) 中滿足下列條件的整數個數:這個數恰好等於 \(k\) 個互不相等的 \(b\) 的整數次冪之和。

例如,設 \(x=15,y=20,k=2,b=2\),則有且僅有下列三個數滿足題意:

\(17=2^4+2^0\)

\(18=2^4+2^1\)

\(20=2^4+2^2\)

輸入格式

第一行包含兩個整數 \(x\) 和 \(y\),接下來兩行包含整數 \(k\) 和 \(b\)。

輸出格式

只包含乙個整數,表示滿足條件的數的個數。

資料範圍

\(1 \le x \le y \le 2^ - 1\),

\(1 \le k \le 20\),

\(2 \le b \le 10\)

輸入樣例

15 20

22

輸出樣例

3
數字dp,時間複雜度:\(o(n^2)\)

c++ **

#include #include #include using namespace std;

const int n = 35;

int k, b;

int f[n][n]; //f[i][j]: 表示有i位數,其中1的個數為j的所有集合。屬性:方案數

void init()

}}int dp(int n) else if (x > 1)

if (x) else

}if (!i && last == k) ans ++; //該數本身是否滿足要求

}return ans;

} int main()

Acwing 1081 度的數量 數字dp

題目大意 求給定區間 x,y 中滿足下列條件的整數個數 這個數恰好等於 k 個互不相等的 b 的整數次冪之和。例如,設 x 15,y 20,k 2,b 2,則有且僅有下列三個數滿足題意 17 24 20 18 24 21 20 24 22 輸入格式 第一行包含兩個整數 x 和 y,接下來兩行包含整數...

AcWing1081 度的數量(數字dp)

對於數字dp的題目,我學習的是y總的模板,也就是說把所有數先用拆位後考慮從頭開始考慮,形成乙個樹的形狀 左分支為填0 ai 1的情況,這列情況一般可以通過數學公式一次性求出,之後右分支就填當前數,這樣向下延申,在最後特判右分支的情況,也就是乙個數 對於數字dp,一般儲存兩個量,乙個是個數,乙個是la...

AcWing 連通塊中點的數量

給定乙個包含n個點 編號為1 n 的無向圖,初始時圖中沒有邊。現在要進行m個操作,操作共有三種 c a b 在點a和點b之間連一條邊,a和b可能相等 q1 a b 詢問點a和點b是否在同乙個連通塊中,a和b可能相等 q2 a 詢問點a所在連通塊中點的數量 第一行輸入整數n和m。接下來m行,每行包含乙...