Time Limits: 1000 ms Memory Limits: 131072 KB

Description

众所周知,DH是一位人生赢家,他不仅能虐暴全场,而且还正在走向人生巅峰;

在巅峰之路上,他碰到了这一题:

每次生成一个[0,n)的随机整数,如果这个随机数和给出的m个数字中的其中一个数字相等,那么就停止生成随机数,否则继续生成,求出所有生成的数的和的期望。

Input

JZOJ-senior-5949. 【NOIP2018模拟11.04】人生赢家

Output

输出一行一个实数表示期望,保留6位小数,
注意了本题没有SPJ,必须和答案完全相同才能通过本题

Sample Input

2 1
1

Sample Output

1.000000

Data Constraint

JZOJ-senior-5949. 【NOIP2018模拟11.04】人生赢家

Hint

JZOJ-senior-5949. 【NOIP2018模拟11.04】人生赢家

Solution

假设在第 ii 次中选中了 mm 个数中的一个
那么答案就是 i=1i+(nmn)i11nn(n1)2\sum_{i=1}^{i\to+\infty}(\frac{n-m}{n})^{i-1}*\frac{1}{n}*\frac{n(n-1)}{2}
化简可得 ans=n(n1)2mans=\frac{n(n-1)}{2m}

Code

#include<cstdio>

using namespace std;

int n,m;

int main()
{
	freopen("winner.in","r",stdin);
	freopen("winner.out","w",stdout);
	scanf("%d%d",&n,&m);
	double ans=(double)(n-1)*(double)n/m*0.5;
	printf("%.6lf",ans);
}

相关文章:

  • 2021-04-30
  • 2021-05-23
  • 2021-12-14
  • 2021-05-19
  • 2021-08-11
  • 2021-09-01
  • 2021-10-12
  • 2021-11-15
猜你喜欢
  • 2021-12-17
  • 2021-04-05
  • 2021-04-16
  • 2021-07-16
  • 2021-07-31
  • 2021-08-25
  • 2021-04-03
相关资源
相似解决方案