m!
C(m,n) = --------
n!(m-n)!
10 5 14 9
93 45 84 59
145 95 143 92
995 487 996 488
2000 1000 1999 999
9998 4999 9996 4998
0.12587
505606.46055
1.28223
0.48996
2.00000
3.99960
题意:题目所求为组合 C(p,q) / C(r,s);那么可以乘以一个在除以一个;即将
m! C(m,n) = -------n!(m-n)!
化简成为 m * (m-1) * (m-2) . . . . . (m- n +1)/n!; 这个分子与分母的个数是一样的;
那么便有一下标程;
# include <iostream>
# include <cstdio>
using namespace std;
int main()
{
//freopen("a.txt","r",stdin);
int p,q,r,s;
while(scanf("%d%d%d%d",&p,&q,&r,&s)!=EOF)
{
int i,n;
double ans=1.0;
//if (p - q < q) q = p - q;
//if (r - s < s) s = r - s;
for(i=1;i<=q||i<=s;i++)
{
if(i<=q) ans=ans*(p-q+i)/i;
if(i<=s) ans=ans/(r-s+i)*i;
}
printf("%.5lf\n",ans);
}
return 0;
}原文:http://blog.csdn.net/rechard_chen/article/details/40747365