題目鏈結
題意:
給你乙個集合,問有多少個子集是有趣的。有趣的集合定義是,集合中兩個不一樣的數,其中a是集合裡的最小值,b是a的倍數。
題解:
對於數字a,集合中存在x=2n/a-1個大於a的倍數,也存在y=2n-x-a個大於a但不是a的倍數的數。對於有趣的集合必須要出席那大於a的倍數,一共有2^x-1種可能(減去乙個都不出現的情況),而不是倍數的數可出現可不出現,一共有2^y種可能,將兩個值相乘,即為最小值為a的有趣的子集的個數。列舉所有a的情況,相加即為答案。
組合數學 求組合數
對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...
數學 組合數學
mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...
組合數學筆記
從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...