VJ 1060 盒子
描述
N个盒子排成一行(1<=N<=20)。你有A个红球和B个蓝球。0 <= A <= 15, 0 <= B <= 15。球除了颜色没有任何区别。你可以将球放进盒子。一个盒子可以同时放进两种球,也可以只放一种,也可以空着。球不必全部放入盒子中。编程计算有多少种 放置球的方法。
格式
输入格式
一行,N,A,B,用空格分开。
输出格式
一行,输出放置方案总数。
限制
1s
题解:插板法
CODE:
#include <iostream> #include <cstdio> #include <cstring> #define REP(i, s, n) for(int i = s; i <= n; i ++) #define REP_(i, s, n) for(int i = n; i >= s; i --) #define MAX_N 20 using namespace std; typedef unsigned long long ULL; int main(){ int n, a, b; scanf("%d%d%d", &n, &a, &b); ULL sum1 = 1, sum2 = 1; REP(i, 1, a) sum1 = sum1 * (n + i) / i; REP(i, 1, b) sum2 = sum2 * (n + i) / i; ULL c = sum1 * sum2; cout << c << endl; return 0; }