!-- Loading 底层遮罩 -->

P2638 安全系统

传送门

思路

隔板法:n个盒子放k个小球。用n-1个隔板隔开k个小球。如果要求每个盒子中至少有一个小球则方案数为C(k-1,n-1),如果盒子里可以没有小球则为C(k+n-1,n-1)。

代码

#include<iostream>
using namespace std;
typedef unsigned long long LL;
LL n, a, b, ans;
LL C(LL n, LL m) {
    LL res = 1;
    for (LL i = 1; i <= m; i++)
        res = res * (n - m + i) / i;
    return res;
}
int main(void)
{
    cin >> n >> a >> b;
    for (LL i = 0; i <= a; i++)
    {
        for (LL j = 0; j <= b; j++)
        {
            ans += C(i + n - 1, n - 1) * C(j + n - 1, n - 1);
        }
    }
    cout << ans;
    return 0;
}
 

 

posted @ 2022-03-30 21:24  Thinker-X  阅读(81)  评论(0)    收藏  举报