关闭

poj 2249 && uva 530

71人阅读 评论(0) 收藏 举报
分类:

题目概述

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29167次
    • 积分:2260
    • 等级:
    • 排名:第18311名
    • 原创:209篇
    • 转载:0篇
    • 译文:0篇
    • 评论:8条
    最新评论