83D Numbers 容斥 暴力

2021-10-14 03:55:39 字數 887 閱讀 1671

傳送門

由於不能包括[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...