1. 程式人生 > >LightOJ - 1265 (概率)

LightOJ - 1265 (概率)

case double 偶數 如果 我們 OS 概率 == 兩個

題意:

  1、兩只老虎相遇 就互相殘殺

  2、老虎與鹿相遇 鹿死

  3、老虎與人相遇 人死

  4、人與鹿相遇 鹿死

  5、鹿與鹿相遇 無果

求人活的概率

解析:如果老虎為0 則人活得概率為1

    如果老虎為奇數 因為只有兩只老虎相遇的時候 老虎才能死 所以必然是兩個兩個一起死 所以 最後必然剩一只老虎 所以人死 活得概率為0

    如果老虎為偶數 每天不讓老虎和人相遇即可 等到所有老虎都相遇 互相殘殺之後 人不就是活的了嗎 而且鹿的數量 並不能影響人的存活率 因為鹿並不能減少老虎的數量

所以 如果老虎為偶數 則我們把所有老虎都相遇的概率求出來即可

   設 老虎 有 x 個

   則一對老虎相遇的概率為 C(1,x)/(x+1) * C(1,x-1)/(x)

    所有老虎相遇的概率為 C(1,x)/(x+1) * C(1,x-1)/(x) * C(1,x-2)/(x-1) * C(1,x-3)/(x-2) * `````* C(1,2)/3 * C(1,1)/2 化簡為 1/(x+1)

代碼如下:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn = 10010
; int main() { int T,n,k; scanf("%d",&T); for(int i=1; i<=T; i++) { scanf("%d%d",&n,&k); if(n == 0) { printf("Case %d: 1\n",i); continue; } else if(n & 1) { printf("Case %d: 0\n",i);
continue; } else { printf("Case %d: %.10f\n",i,1/(double)(n+1)); } } return 0; }

LightOJ - 1265 (概率)