http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1061

题意 : 表示这个题的英文没看懂,就看懂了一个warning,看着样例像组合数就算了一下,结果真是。

组合数这种题,一共有好多代码,但基本各种代码放在各种题上就会出现不同的问题,要么是超时问题,或者越界问题,还有的直接WA,超时我倒是好理解,但我不明白的是为什么都是算组合数的还会出现越界和WA这样的错误,难道是数组问题?一直不太肯定,毕竟只有一种方法用了数组,递推去做的,还希望了解的朋友们能为我指点迷津啊】

#include<stdio.h>
#define LL long long
LL c(LL x, LL y)
{
    int i, j;
    LL sum = 1;
    if(y > (x/2))
        y = x - y;
    for(i = x, j = 1; i > x-y; i--, j++)
    {
        sum *= i;
        sum /= j;
    }

    return sum;
}
int main()
{
    LL n,m;
    while(~scanf("%lld %lld",&m,&n))
    {
        if(m == 0&&n == 0)
            break ;
        printf("%lld\n",c(m,n));
    }
}

 
View Code

这个代码算适用大多数代码的,若是数据过大,用这个一般就对

posted on 2013-08-21 15:47  枫、  阅读(195)  评论(0编辑  收藏  举报