SDUT1061Binomial Showdown(组合数)

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

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

你可能感兴趣的:(show)