题目本身很简单,就是求C(n,k)。因为数比较大,所以分母(n-i+1)的乘和分子(i)的除要同时做。如果是用循环,因为可能出现小数,需要用double类型,用递归则可以避免这个问题。 #include <iostream> using namespace std; __int64 com(__int64 c,__int64 k) { return k>0?com(c-1,k-1)*c/k:1; } int main() { __int64 first,second; while(scanf("%I64d%I64d",&first,&second)&&(first!=0||second!=0)) printf("%I64d/n",com(first+second,first>second?second:first)); return 0; }