题解
题意:
n个朋友抛m面骰子玩,按照下面规则选出法官:
- 选一个最小的 x,满足 m x ≥ n m^x\ge n mx≥n
- 每个人选个序,这个序长度为x,每个位置都可以选骰子一面上的数(1~m)放
- 抛x次骰子,组成新的序,谁的序和这个一样,谁就是法官,否则重复这三个步骤
问一个人能当上法官需要投掷次数的期望
以下是公式计算证明:
设x表示一个人在第k轮(每一轮都要投掷x次,也就是投掷kx次)才能当上法官,p表示被选为法官的概率
则每个人当上法官的概率是:
k k k | 1 | 2 | 3 | 4 | … | k |
---|---|---|---|---|---|---|
p ( k ) p(k) p(k) | p p p | ( 1 − p ) p (1-p)p (1−p)p | ( 1 − p ) 2 p (1-p)^2p (1−p)2p | ( 1 − p ) 3 p (1-p)^3p (1−p)3p | … | ( 1 − p ) k − 1 p (1-p)^{k-1}p (1−p)k−1p |
则每个人需要投掷次数的期望 = 投掷次数 * 投掷成功被选上法官的概率 之和
E = ∑ k i ∗ p ( k i ) = x ∗ p + 2 x ∗ ( 1 − p ) p + 3 x ∗ ( 1 − p ) 2 p + . . . + k x ∗ ( 1 − p ) k − 1 p E=\sum k_i*p(k_i)=x*p+2x*(1-p)p+3x*(1-p)^2p+...+kx*(1-p)^{k-1}p E=∑ki∗p(ki)=x∗p+2x∗(1−p)p+3x∗(1−p)2p+...+kx∗(1−p)k−1p
利用错位相减法:
E p = x [ 1 + 2 ∗ ( 1 − p ) + 3 ∗ ( 1 − p ) 2 + . . . + k ∗ ( 1 − p ) k − 1 ] \cfrac{E}{p}=x[1+2*(1-p)+3*(1-p)^2+...+k*(1-p)^{k-1}] pE=x[1+2∗(1−p)+3∗(1−p)2+...+k∗(1−p)k−1] - ①
( 1 − p ) E p = x [ 1 ( 1 − p ) + 2 ∗ ( 1 − p ) 2 + 3 ∗ ( 1 − p ) 3 + . . . + ( k − 1 ) ∗ ( 1 − p ) k − 1 + k ∗ ( 1 − p ) k ] \cfrac{(1-p)E}{p}=x[1(1-p)+2*(1-p)^2+3*(1-p)^3+...+(k-1)*(1-p)^{k-1}+k*(1-p)^{k}] p(1−p)E=x[1(1−p)+2∗(1−p)2+3∗(1−p)3+...+(k−1)∗(1−p)k−1+k∗(1−p)k] - ②
① - ② :
E = x [ 1 + [ ( 1 − p ) + ( 1 − p ) 2 + ( 1 − p ) 3 + . . . + ( 1 − p ) k − 1 ] − k ∗ ( 1 − p ) k ] E=x\left[1+\left[ (1-p)+(1-p)^2+(1-p)^3+...+(1-p)^{k-1}\right] -k*(1-p)^{k}\right] E=x[1+[(1−p)+(1−p)2+(1−p)3+...+(1−p)k−1]−k∗(1−p)k]
然后用等比公式合并,
等比公式通项式、求和公式:
a n = a 1 ⋅ q n − 1 a_n=a_1·q^{n-1} an=a1⋅qn−1
S n = a 1 ( 1 − q n ) 1 − q ( q ≠ 1 ) S_n=\cfrac{a_1(1-q^n)}{1-q}\,(q\neq1) Sn=1−qa1(1−qn)(q=1)
E = x [ 1 + ( 1 − p ) [ 1 − ( 1 − p ) k − 1 ] p − k ( 1 − p ) k ] E=x\left[1+\cfrac{(1-p)\left[1-(1-p)^{k-1}\right]}{p}-k(1-p)^k\right] E=x[1+p(1−p)[1−(1−p)k−1]−k(1−p)k]
E = x [ 1 + ( 1 − p ) p − ( 1 − p ) k p − k ( 1 − p ) k ] E=x\left[1+\cfrac{(1-p)}{p}-\cfrac{(1-p)^k}{p}-k(1-p)^k\right] E=x[1+p(1−p)−p(1−p)k−k(1−p)k]
E = x [ 1 p − ( 1 − p ) k ⋅ ( 1 p + k ) ] E=x\left[\cfrac{1}{p} -(1-p)^k·(\cfrac{1}{p}+k)\right] E=x[p1−(1−p)k⋅(p1+k)]
注意:这里的k是无穷大,因为没有回合限制
因此 ( 1 − p ) k (1-p)^k (1−p)k 趋向于0
也就是说 E ≈ x p E\approx \cfrac{x}{p} E≈px
还记得之前的定义吗?p表示被选为法官的概率
一条序列x个位置,每个位置有m种数字可以填入,总共有 m x m^x mx 种
只要序列和第三步出现的相同,就是被选中
所以每个人被选中的概率 p = 1 m x p=\cfrac{1}{m^x} p=mx1
n个人里有一个被选中的概率就是 n m x \cfrac{n}{m^x} mxn
所以 a n s = x p = x ⋅ m x n ans=\cfrac{x}{p}=\cfrac{x·m^x}{n} ans=px=nx⋅mx
诶,要是我比赛的时候能做出来该多好
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,k;
int main(){
ios::sync_with_stdio(0);
int T;
cin>>T;
for (int cs = 1; cs <= T; ++cs) {
cin>>n>>m;
int x=1;
ll tmp=m;
while(tmp<n)tmp*=m,x++;
ll mol = pow(m,x)*x;//分子
ll g=__gcd(mol,n);
printf("Case %d: %lld/%lld\n",cs,mol/g,n/g);
}
return 0;
}