度的數量
求給定區間 \([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行,每行包含乙...