http://codeforces.com/problemset/problem/768/D
题目大意:
有k件物品 每天可以随机选取k件中的一件 概率相同 现在问选取k件不同的物品的的概率>p/2000.0 最少需要多少天
分析:
每天有两种情况 1、选取的是之前选过的的一种 2、选取的是之前没有选过的 概率dp
AC代码:
#include <bits/stdc++.h>
using namespace std;
double dp[15050][1000];
int main (){
int k,q;
while (scanf ("%d%d",&k,&q)!=EOF){
dp[0][0]=1;
for (int i=1;i<=15000;i++){
for (int j=1;j<=k;j++){
dp[i][j]+=dp[i-1][j]*(j*1.0/k);
dp[i][j]+=dp[i-1][j-1]*((k-j+1)*1.0/k);
}
}
int p;
while (q--){
scanf ("%d",&p);
for (int i=1;i<=15000;i++){
if (dp[i][k]>p*1.0/2000.0){
printf ("%d\n",i);
break;
}
}
}
}
return 0;
}