VJ 1060 盒子

描述

N个盒子排成一行(1<=N<=20)。你有A个红球和B个蓝球。0 <= A <= 15, 0 <= B <= 15。球除了颜色没有任何区别。你可以将球放进盒子。一个盒子可以同时放进两种球,也可以只放一种,也可以空着。球不必全部放入盒子中。编程计算有多少种 放置球的方法。

格式

输入格式

一行,N,A,B,用空格分开。

输出格式

一行,输出放置方案总数。

样例1

样例输入1[复制]

2 1 1

样例输出1[复制]

9

限制

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

 

posted @ 2015-05-25 10:33  ALXPCUN  阅读(254)  评论(0编辑  收藏  举报