傳送門
由於不能包括[2,
k−1]
[2,k-1]
[2,k−1
]的因子
所以得到的數字分解質因子後必定都是大於等於k
kk的質因子
那麼乙個數的質因子不會30
3030
個…好像沒什麼用
搜尋的複雜度是上天的。
那就套路的容斥,求[a,
b]
[a,b]
[a,b
]符合條件的就是求[1,
b]−[
1,a−
1]
[1,b]-[1,a-1]
[1,b]−
[1,a
−1]符合條件的
那麼如何求[1,
n]
[1,n]
[1,n
]的方案數…
首先是k
kk倍數的數有n/k
n/kn/
k個,在這基礎上需要進行容斥,因為有數擁有比k
kk小的因子的同時也擁有kkk
也就是減去是[2,
k−1]
[2,k-1]
[2,k−1
]的倍數的數
這裡使用遞迴計算
然後目測複雜度很低,因為一直除以k
kk
#include
using
namespace std;
#define int long long
int a,b,k;
bool
isprime
(int x)
intsolve
(int n,
int k)
signed
main()
演算法概論 8 3
吝嗇sat問題是這樣的 給定一組子句 每個子句都是其中文字的析取 和整數k,求乙個最多有k各變數為true的滿足賦值 如果該賦值存在。證明吝嗇sat是np完全問題。可以將sat問題歸約到此問題。首先,若得到了吝嗇sat問題的乙個解,按照此解對吝嗇sat的每個子句賦值,即可驗證這個解是否成立,這個過程...
演算法設計8 3
題目 吝嗇sat問題是這樣的 給定一組子句 每個子句都是其中文字的析取 和整數k,求乙個最多有k個變數為true的滿足賦值 如果該賦值存在。證明吝嗇sat是np 完全問題。解答 首先我們要證明吝嗇sat問題是np 完全問題,我們首先要證明吝嗇sat問題是np問題,然後如果能把sat問題規約到吝嗇sa...
8 3配置別名
有沒有經常敲錯命令?比如git status?status這個單詞真心不好記。如果敲git st就表示git status那就簡單多了,當然這種偷懶的辦法我們是極力贊成的。我們只需要敲一行命令,告訴git,以後st就表示status git config global alias.st status...