[CHN]liurui

[CHN]liurui vs. hdu1000

poj 2249 && uva 530

题目概述

CMN

时限

1000ms/3000ms

输入

每行两个整数N,M

限制

最终结果在32位整数范围内

输出

每行一个数,为结果

样例输入

4 2
10 5
49 6
0 0

样例输出

6
252
13983816

讨论

水题,本来以为真的会测试极端情况,N=INT_MAX,M=INT_MAX/2,不过由于结果在32位内,即便是最坏的情况,N也不超过40,具体是多少没有细算,反正绝对是水题了
顺便一提,题解是基于这个公式的

Cmn=nm+1mCm1n

题解状态

164K,16MS,C++,487B

题解代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define MAXN 1004
#define memset0(a) memset(a,0,sizeof(a))

#define long long long
int N, M;
long C()
{
    if (M > N / 2)
        M = N - M;
    long a = 1;
    for (int p = 1; p <= M; p++) {
        a *= N - p + 1;
        a /= p;
    }
    return a;
}
int main(void)
{
    //freopen("vs_cin.txt", "r", stdin);
    //freopen("vs_cout.txt", "w", stdout);

    while (~scanf("%d%d", &N, &M) && (N || M))//input
        printf("%lld\n", C());//output
}

EOF

阅读更多
个人分类: 水题 poj uva
上一篇poj 3069
下一篇poj 1017 &amp;&amp; uva 311 &amp;&amp; la 5526
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭