【題意】
v_dragon有n棧電燈泡,編號為1-n,每個燈泡都有乙個開關。那麼問題來了
所有燈泡初始時為不亮的
v_dragon分別進行三次操作
每次操作他都選乙個質數x,將編號為x和x的整數倍的燈泡的開關都撥動一下(如果燈為亮,那麼撥動以後燈為不亮,如果燈不亮,撥動以後變為亮)
求最後亮著的燈的數量
【解題思路】
畫一下圖可以知道最後亮著的燈泡的數量如下圖所示
將集合a表示為被a整除的數,集合b為被b整除的數,集合c為被c整除的數。
陰影部分的面積求法:s-ab-ac-bc+3abc
而s=a+b+c-ab-ac-bc+abc 整理得陰影部分面積為a+b+c-2*(ab+ac+bc)+4*abc
【**】
#includeusing namespace std;
int main()
return 0;
}
【題意】
用m個字元組合名字,名字中有姓和名分別為長度為n的字串,姓和名中的字元不能相同,但姓中的字元可以相同,名中的字元也可以相同。
【解題思路】
用f[i]表示姓中含有i個字元
f[1]=1
f[2]=2^n-c[2][1]*f[1](這裡需要運用容斥定理,減去姓中含有1個字元的情況)
f[3]=3^n-c[3][2]*f[2]-c[3][1]*f[1]
f[i]=i^n-(c[i][1]*f[1]+c[i][2]*f[2]+...c[i][i-1]*f[i-1])
姓中的字元搞定後名中的字元就簡單了,最後所有方案數為 c(m,i)*f[i]*(m-i)^n ,1<=i<=m
【**】
#includeusing namespace std;
typedef long long ll;
const int maxn=2005;
const int mod=1e9+7;
ll n,m,c[maxn][maxn],f[maxn];
void zuhe()
return ans%mod;
}int main()
return 0;
}
同餘定理 容斥原理
小學期的第二天,了解了一下同餘定理。在理解完這個同餘定理以後感覺非常奇妙,可能就是數學的魅力?即 給定乙個正整數m,如果兩個整數a和b滿足 a b 能夠被m整除,即 a b m得到乙個整數,那麼就稱整數a與b對模m同餘 a c的值 b c的值 記作a b mod m 基本應用 1 a b p a p...
容斥原理 鴿巢原理快速入門
在計數時,必須不重不漏。為了使得重疊部分不被重複計算,人們研究出一種新的計數方法,這種方法的基本思想是 先不考慮重疊的情況,把包含於某內容中的所有物件的數目先計算出來,然後把計數時重複計算的數目排斥出去,使得計算的結果既無重複也無遺漏,這種計數的方法稱為容斥原理。公式的解釋 目的是求解m個集合的並集...
鴿巢原理以及Ramsey定理詳解
簡單形式 plain view plain copy print?定理 如果有n 1個物體被放進n個盒子,那麼至少有乙個和紫包含兩個或者更多的物體。定理非常的簡單,但是真正用好這個定理卻需要一定的功底。eg1.以為西洋棋大師有11周的時間備戰一場錦標賽,他決定每天至少下一盤西洋棋,但是為了不使自己過...