容斥原理的二進位制實現模版

2022-07-30 10:15:11 字數 1010 閱讀 2953

最近學習容斥原理,實現容斥原理大致有三種方法:dfs,佇列陣列,二進位制。

今天主要講下二進位制實現容斥原理:

有乙個集合,求集合的子集?很顯然答案為

也就是2^n個,也就是每乙個子集有唯一標誌符 i (0

**看下面的:

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9

using

namespace

std;

10int prime[40000

],m;

11bool f[40000

];12 vectorp;//

存放質因數

13//

用篩法初始化40000以內的質數,將質數存放在prime陣列中,m記錄大小

14int

init()23}

24}25//

對n分解質因數

26void factor(int

n)35}36

if(n>1

) p.push_back(n);37}

38//

用二進位制實現容斥原理,求區間[1,r]內與n互素的數的個數

39int solve(int

r)50

int cur = r /mult;

51if (bits & 1)//

若1的個數是奇數則進行加法,否則進行減法

52 sum +=cur;

53else sum -=cur;54}

55return r - sum;//

用總的數目-與n不互素的個數56}

57int

main()

64return0;

65 }

容斥原理二進位制實現

最近學習容斥原理,實現容斥原理大致有三種方法 dfs,佇列陣列,二進位制。今天主要講下二進位制實現容斥原理 有乙個集合,求集合的子集?很顯然答案為 也就是2 n個,也就是每乙個子集有唯一標誌符 i 0 看下面的 1 include2 include3 include4 include5 includ...

容斥 二進位制UVA 11806

問題是求四個邊都有隊員的排列組合,根據容斥原理可以轉化為對立問題的求解 全集為s c n m,k 該區域有k個隊員的全部排列組合,a 最左邊沒有隊員的全部種數,b 最右邊沒有,c 最上邊沒有,d 最下邊沒有,則答案就是屬於全集s但不屬於 a,b,c,d中任何乙個集合,根據容斥 ans s a b c...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...