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;
}

浙公网安备 33010602011771号