o.boj 1078 牛税

注:最近这一系列ACM的内容,都是2年多之前的代码,自己回顾一下。
 

牛税                 

Submit: 1434 Accepted:442
Time Limit: 1000MS Memory Limit: 65536K

Description

912农场的很多农场主们都要交税了,当地政府规定,由于每个农场的效益都差不多,所以每个农场主的交税金额都一样:一头小牛!这可愁坏了一半的农场主,因为他们手中只有大牛!政府于是又补充说,交税者可以上交一头大牛的同时,抱回去一头小牛,农场主都同意了这个方案。可是税务局犯愁了,因为如果一个农场主抱来一头大牛交税而他们手中又没有小牛可以返还的话,农场主会很生气第二年就不交税了,所以他们需要安排农场主交税的顺序,使得每个抱大牛来的农场主都会有小牛抱回去,注意,当排序的时候他们不会关心每个农场主是谁,他们只关心他们要交的是大牛还是小牛,请问他们一共有多少种排序方法呢?
 

Input

第一行是一个数t,表示有t组数据。
之后每行是一个偶数n(0 < n <40),表示农场主的数量,其中n/2的农场主只有小牛,剩下的则只有大牛。
 
 

Output

对于每组数据,每行输出一共有多少种安排方法,才可以顺利完成牛税的征收。
 
 
 

Sample Input

 
1
4
 
 
 

Sample Output

 
2
 

Hint

如对于sample,税务局可以安排两个农场主交小牛,然后两个交大牛,也可以小牛大牛轮流交,故共有两种方法。
 

Source

zhao0057@Pluto

 

 

卡特兰数问题

 

#include <iostream>

using namespace std;

long long C(long long a, long long b)
{
    long long i = 1;
    long long num = 1;
    
    for (; i <=b; i++)
    {
        num = num * a / i;
        a--;
    }
    return num;
}

long long Catalan(long long n)
{
    return C(2*n, n) / (n + 1);
}

int main()
{
    long long x, n;
    
    cin >> x;
    
    while (x--)
    {
        cin >> n;
        cout << Catalan(n/2) << endl;
    }
    
    // system("pause");
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值