今天做英语七选五的时候突发奇想:不重复地乱填五个选项,期望对几个?
然后发现这个问题并没有想象中的那么简单......回家打开C++一通暴算得到答案5/7
打了个表发现这好像不是偶然,但我证不出来qaq
于是求dalao给出证明:
若有n道题目,m个选项。当n>=m时,每个选项对应一道题目且没有一道题目对应两个或更多选项;当n<m时则相反。记X为任意按顺序给出min(n,m)个选项并依次填入题目时题目与选项配对成功数,则P(X)=n/m
附上本蒟蒻的打表程序(总不会是写挂了吧):
#include<bits/stdc++.h>
using namespace std;
bool v[100];int l[100],cnt[100],n,m,p,q;
void dfs(int k,int tot){
if(k==n+1){
cnt[tot]++;
return;
}
for(int i=1;i<=m;i++)if(!v[i]){
if(i==k)tot++;
v[i]=true;
dfs(k+1,tot);
v[i]=false;
if(i==k)tot--;
}
}
int main(){
for(n=1;n<=12;n++)//题目
for(m=1;m<=12;m++){//选项
memset(cnt,0,sizeof(cnt));p=0;q=1;
dfs(1,0);
for(int i=0;i<=n;i++)p+=i*cnt[i];//期望的分子
for(int i=m;i>=m-n+1;i--)q*=i;//排列
if(1.00*p/q-1.00*n/m>1e-5){
printf("error %d %d",n,m);
return 0;
}
printf("%d %d\n",n,m);
}
printf("perfect");
}