安全系統(楊輝三角求組合數)

2021-10-03 20:49:58 字數 1287 閱讀 3361

題目大意

給你n個盒子,每個盒子裡可以放0或者1,可以只放乙個,可以都放,可以都不放,現在有a個1,b個0,每個1或每個0各不相同,問你有多少種方案去放。

資料範圍

a,b≤50,n+a\le 50n+a≤50,n+b\le 50n+b≤50

思路

注意每個1(或者0)都不同,這卡了我很久。 ,這題很容易想到組合數學的解法。因為互不影響,我們可以先放1,再放0。對於放1,我們可以在a個1中選取i個1,然後再n個位置裡選i個位置放1,就相當於cn

i *ca

i,對0同理。最後對放1的方案數和放0的方案數相乘就行了。

但是如果我們按照公式,用階乘去算組合數,會爆精度,所以我們要另闢蹊徑。

之前寫過一篇楊輝三角求組合數的問題,這裡可以用上。資料開ull

#include

using

namespace std;

const

int n=

1e3+5;

const

int inf=

0x7fffffff

;const

int mod=

1e9+7;

const

int eps=

1e-6

;typedef

long

long ll;

typedef

unsigned

long

long ull;

#define fi first

#define se second

#define mp make_pair

#define pb push_back

#define pii pair

#define int long long

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define endl '\n'

ull c[n]

[n];

void

zuhe()

}}signed

main()

res=tt;tt=0;

for(

int i=

0;i<=

min(b,n)

;i++

) res*

=tt;

cout<}

組合數(楊輝三角)

原來組合數和楊輝三角是有關係的 楊輝三角上的每乙個數字都等於它的左上方和右上方的和 除了邊界 第n行,第m個就是,就是c n,m 從0開始 所以以後求楊輝三角或者組合數都可以用到下面的遞推公式 includeconst int n 2000 5 const int mod int 1e9 7 int...

組合數 楊輝三角

不難想到,我們可以用二維陣列來實現。上 include intmain i,j scanf d n for i 1 i n i a i 1 1 for i 2 i n i for i 1 i n i printf n return0 這樣我們實現了楊輝三角。更近一步,我們得到 用遞迴的辦法來實現也可...

楊輝三角與組合數

相信大部分oier已經對楊輝三角很熟悉了,我第一次做楊輝三角的時候是剛學完for迴圈,有一道題是列印楊輝三角的,那時起,我就對這個幾何圖形的構造方式充滿了興趣。最近,在老師的引導下,我學習了有關楊輝三角的乙個小秘密。本文將簡單介紹楊輝三角與組合數之間的聯絡。如果將 a b n a b n a b n...