题意:M种牌放到M堆里,M种牌和M堆都是从1-M编号的。输入 M, 然后输入M个数,表示M种牌分别有多少张,同时也表示M堆分别的最大容量是多少。游戏是这样玩的,从第一堆开始由顶向下取,取到的牌属于第k种,就接着到第k堆取。当任何一次取不到牌时,游戏结束。求游戏结束时牌恰好被取完的概率。
答案竟然就是 a1/(a1+……+an)
代码:
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 int main() 6 { 7 int t,n,i,a,b,k=0,sum; 8 scanf("%d",&t); 9 while(t--) 10 { 11 k++; 12 sum=0; 13 scanf("%d",&n); 14 scanf("%d",&a); 15 n--; 16 sum+=a; 17 while(n--) 18 { 19 scanf("%d",&b); 20 sum+=b; 21 } 22 printf("Case %d: %f\n",k,(a*1.0)/sum); 23 } 24 return 0; 25 }