​http://acm.sgu.ru/problem.php?contest=0&problem=495​


给出n个prize,m个人选,同一个prize可重复选,问最终送出去的prize数量的期望


分析:相对误差不超过1e-9,即输出%.10lf即可,不用像例子那样非得把小数点后的0去掉。不过话说回来自己学习了去掉它的方法:输出%g,但是是有误差的。

#include <iostream>
#include <cstdio>
using namespace std;
const int N=1e5+10;
double dp[N];
int main()
{
int n,m;
while(cin>>n>>m){
dp[1]=1;
for(int i=2;i<=m;i++){
dp[i]=dp[i-1]+(n-dp[i-1])/n;
}
printf("%.10lf\n",dp[m]);
}
return 0;
}


另一种写法:每一个prize不被选中的概率:


SSU 495. Kids and Prizes(简单概率)_#include


那么结果就是:


SSU 495. Kids and Prizes(简单概率)_#include_02