题意:有个蛋糕,上面有n个草莓随机分布,现在要等分成m份,问有一份含n个草莓的概率。
题解:未知。。我直接YY答案出来的。。ans=n/m^(n-1)。需要大数处理下。具体切蛋糕的过程是:切成扇形,先第一个草莓100%概率,第二枚只能在第一颗草莓左右1/m取区域,概率为2/m;第三个草莓分布需要根据前两个草莓确定。maybe是需要积分吧,高数不行。。没办法。
耗时:15MS
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int c[100],num;
void mul(int a)
{
int i,j,k,t;
for(i=0;i<num;i++)
c[i]=c[i]*a;
t=0;
for(i=0;i<num;i++)
{
k=c[i]+t;
c[i]=k%10;
t=k/10;
}
while(t)
{
c[num++]=t%10;
t=t/10;
}
}
int main()
{
int T,m,n;
cin>>T;
while(T--)
{
cin>>m>>n;
int a,b,i,t;
a=n;
b=m;
memset(c,0,sizeof(c));
c[0]=1;
num=1;
for(i=1;i<n;i++)
{
b=m;
t=gcd(a,b);
a=a/t;
b=b/t;
mul(b);
}
printf("%d/",a);
for(i=num-1;i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
return 0;
}