Code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1010;
ll k,Q;
double dp[5010];
double res[500010];
int main(){
scanf("%lld%lld",&k,&Q);
dp[0] = 1.0;
for(ll T = 1; T <= 50000; T++){
for(ll it = k; it >= 1; it--){
dp[it] = dp[it]*(double)(it)/(double)(k)+dp[it-1]*(double)(k-it+1)/(double)(k);
}
res[T] = dp[k]*2000.0;
dp[0] = 0.0;
}
while(Q--){
double p;
scanf("%lf",&p);
printf("%lld\n",lower_bound(res+1,res+50001,p)-res);
}
return 0;
}
数据:
1 1
1
本地输出:
1
CF:
39571629642088449