close

題目概要:

計算出獲勝者的機率。

 

解題方向:

第一個輸入:有多少組測試資料。

第二個輸入:參加遊戲人數。

第三個輸入:獲勝的機率。

第四個輸入:第幾個人獲勝。

 

※假設獲勝機率:p、輸機率:q=1-p,每次遊戲共有R個回合、有n個人參與遊戲、第k個人獲勝。

 

稍微列出計算式子。

Round_1:

第一個人獲勝的機率:p

第二個人獲勝的機率:q*p

第三個人獲勝的機率:(q^2)*p

 

第k個人獲勝的機率:(q^(k-1))*p

 

Round_2:

第一個人獲勝的機率:(q^n)*p

第二個人獲勝的機率:(q^n)*q*p

第三個人獲勝的機率:(q^n)*(q^2)*p

 

第k個人獲勝的機率:(q^n)*(q^(k-1))*p

 

Round_R:

第一個人獲勝的機率:(q^(R-1)*n)*p

第二個人獲勝的機率:(q^(R-1)*n)*q*p

第三個人獲勝的機率:(q^(R-1)*n)*(q^2)*p

 

第k個人獲勝的機率:(q^(R-1)*n)*(q^(k-1))*p

 

※使用等比級數整理每個回合獲勝的機率就可以獲得此公式:(q^(k-1)*p) * (1-(q^n^R)) / (1-q^n)。(首項:(q^(k-1)*p)、公比:q^n)

 

注意事項:

1.由於題目沒有說要進行多少回合的遊戲,所以R帶50即可。我有試過R=100,但是在Uva Online Judge會出現錯誤,可能是回合數太多,算出來的機率會更精準的關係。

2.在瘋狂程設中要輸出答案時使用printf輸出時,換行符號則要打\r\n。在Uva Online Judge使用printf輸出時,換行符號只需要打\n即可,多打會錯。

 

程式碼:

arrow
arrow
    文章標籤
    Java
    全站熱搜

    a7069810 發表在 痞客邦 留言(1) 人氣()