容斥原理(SOJ3082)

2021-06-21 03:11:07 字數 1030 閱讀 6295

(2012-04-24 21:38:48)

soj3082:

這道題的題意是說,給出一排長度為n的格仔,現在使用m種顏色對n個格仔塗色。要求:相鄰的格仔不同色並且m種顏色都要使用。給出n,m,求塗色的方案數。

剛開始我考慮用遞推公式來做,但是推不出來而且n的範圍是10^9,m的範圍是10^3也不能用表來存。後來看了題目分類是容斥原理。

解題如下:

其實可以這樣考慮:將n個物品放入m個箱子中,任乙個箱子不能為空而且兩個相鄰的物品不能放入同乙個箱子。設總數s表示不存在相鄰的兩個物品放入同乙個箱子,集合

整理得,result=

由於m只有1000,所以只需算出每個

模19871118再求和即可。

**如下:

#include#includeusing namespace std;

#define max 105

#define base 10000

int a[505][1005];//存放c(m,k)

long long mod[1005];//存放c(m,k)mod19871118

void multiply(int a,int max,int b)

}void divide(int a, int max, int b)

}void combinatorics(int m)

for(i=0;i<=m/2;i++)

return b;

} int symbol(int xiaoye)

long long ye(long long x,long long y,long long z)

int main()

{ int n,m;

while(scanf("%d%d",&n,&m)==2)

{ if(m>n)//m>n直接輸出0

{ cout<<0<

容斥原理 分糖(SOJ 747)

分糖 題目描述 有 n 個 相同的 糖果,m 個 不同的 小朋友。m 和 n 滿足 1 m n 100000 105 要求 1.每個小朋友都至少有乙個糖果。2.不存在正整數 x x 2 使得每個小朋友的糖果數都是 x 的倍數。3.糖果不能剩餘。求分糖方法總數。答案模 1000000007 109 7...

容斥原理 數論

兩個集合的容斥關係公式 a b a b a b a b 重合的部分 三個集合的容斥關係公式 a b c a b c a b b c c a a b c 最後可以推廣到n個集合,集合裡的元素為奇數則加,偶數減 hdu 4135 很簡單,直接求出所有的質因子,然後容斥解決 author crystal ...

容斥原理,反演

大概知道為什麼自己水平比較渣啦。一開始只會反演,然後被容斥驚豔到。然後寫了一段時間容斥,反演忘光光。所以融會貫通真的很難。多校的三道題,當時是用反演做的。事實上以前就知道容斥跟莫比烏斯函式值的關係,然後熟練掌握 然後一段時間沒用就忘了哈。簡單來說就是,求乙個數和乙個集合中的數互質的個數,把集合中乙個...