1. 程式人生 > >nowcoder 202H-卡牌遊戲

nowcoder 202H-卡牌遊戲

www. 假設 rdquo 次數 \n 老師 span 一行 獨立

題目鏈接

題目描述 小貝喜歡玩卡牌遊戲。某個遊戲體系中共有N種卡牌,其中M種是稀有的。小貝每次和電腦對決獲勝之後都會有一個抽卡機會,這時系統會隨機從N種卡中選擇一張給小貝。普通卡可能多次出現,而稀有卡牌不會被重復抽到。小貝希望收集到K種稀有卡牌,她想知道期望需要多少次獲勝才能實現這個目標。 輸入描述: 數據有多組,第一行一個整數T表示數據組數。
每組數據一行,三個整數N,M,K.1 ≤ T ≤ 100, 1 ≤ N ≤ 10$$$^5$$$,1 ≤ M ≤ N,1 ≤ K ≤ M 輸出描述: 對於每組數據,輸出形如"Case #x: y",其中 x 為這組數據的編號(從1開始),y 為這組數據的答案。答案的絕對誤差或相對誤差在10$$$^{-6}$$$以內都認為是正確的。 輸入 2
5 2 1
40 9 5 輸出 Case #1: 2.5
Case #2: 28.1146825397 題意 一共n個物品,其中n-m個物品抽到放回,m個物品抽到不放回。抽到m個物品中的k個,求需要抽多少次的期望。 分析 如果對這個題目沒有一點想法,那麽先來看一下《線性代數與概率統計》裏面經典的投籃數學期望問題吧。
籃球選手連續定點投籃,直到命中為止。假設他每次命中的概率為p,且各次投籃是相互獨立的。用X表示首次命中所需投籃次數,求X的數學期望。 那麽X服從下面的幾何分布 $$$$$$ \begin{align} & P(X=k)=(1-p)^{k-1}p \& E(X)=\sum_{k=1}^{\infty}k(1-p)^kp=p\sum_{k=1}^{\infty}k(1-p)^k=p\frac{1}{p^2}=\frac{1}{p} \ \end{align} $$$$$$ 那麽對於這道題而言,相當於總共要投中k個球。先求第一次抽到稀有卡的次數期望,和上面的過程是一樣的,抽中稀有卡的概率是$$$p=\frac{m}{n}$$$,所以期望是$$$EX=\frac{n}{m}$$$;接下來再求第二次抽到稀有卡的次數期望,其實還是一次“投球實驗”,只不過概率變為$$$p=\frac{m-1}{n-1}$$$,而期望也相應的變為$$$EX=\frac{n-1}{m-1}$$$。所以1~k次的次數期望,用同樣的方法就可以求出來。 總結 對不起我的線性代數老師 代碼
#include<stdio.h>
int
main(){ int T; int n,m,k; scanf("%d",&T); double ans=0; for(int kase=1;kase<=T;++kase){ scanf("%d%d%d",&n,&m,&k); printf("Case #%d: ",kase); ans=0.0; for(int i=0;i<=k-1;i++) ans+=1.0*(n-i)/(m-i); printf(
"%.7f\n",ans); } }

nowcoder 202H-卡牌遊戲