COGS 1489玩纸牌
%%%http://blog.csdn.net/clover_hxy/article/details/53171234
1 #include<bits/stdc++.h> 2 #define LL long long 3 #define LD long double 4 #define N 100005 5 using namespace std; 6 inline int ra() 7 { 8 int x=0,f=1; char ch=getchar(); 9 while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} 10 while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} 11 return x*f; 12 } 13 double d[105][105]; 14 int main() 15 { 16 freopen("expected.in","r",stdin); 17 freopen("expected.out","w",stdout); 18 int T=ra(),cnt=0; 19 while (T--) 20 { 21 int a,b,n; 22 scanf("%d/%d%d",&a,&b,&n); 23 double p=(double)a/b; 24 memset(d,0,sizeof(d)); 25 d[0][0]=1.0; d[0][1]=0.0; 26 for (int i=1; i<=n; i++) 27 for (int j=0; j*b<=a*i; j++) 28 { 29 d[i][j]+=d[i-1][j]*(1-p); 30 if (j) d[i][j]+=d[i-1][j-1]*p; 31 } 32 double Q=0.0; 33 for (int j=0; j*b<=a*n; j++) 34 Q+=d[n][j]; 35 int ans=floor(1.0/Q); 36 printf("Case #%d: %d\n",++cnt,ans); 37 } 38 return 0; 39 }