蒜头君对于随机现象十分感兴趣,他做了一个实验来研究随机现象,在实验中,他向m个盒子里扔了n个球,每个球进入每个盒子的概率相等,实验结束后他统计出方差V为:
其中X;表示第i个盒子里的球数,X表示平均每个盒子里的球数。
你的任务是计算出V的期望值。
例如当n= 2,m= 2的时候,V = 1/2。
当n = 772267925, m = 320601292的时候,V的值是多少? (使用最简分数表示)
题解:
这里我们可以直接通过概率论计算出结果。
因为我们是计算方差,而这道题目符合二项分布,即X ~ B(n,p),所以D(X)= np(1 - p)。
所以带入得到答案为n*(m-1)/m*m 。
#include<iostream>
using namespace std;
//求最大公因数
typedef long long int LL;
LL gcd(LL x, LL y)
{
return y ? gcd(y, x % y) : x;
}
int main()
{
LL m, n;
cin >> n >> m;
LL x = gcd(n * (m - 1), m * m);
cout << n * (m - 1) / x << "/" << m * m / x <<endl;
return 0;
}