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)); } }
这个代码算适用大多数代码的,若是数据过大,用这个一般就对