问题描述
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式
一行两个正整数n和m
输出格式
一个实数P表示答案,保留4位小数。
样例输入
2 3
样例输出
0.7500
数据规模和约定
1≤n,m≤20
#include<bits/stdc++.h>
using namespace std;
int main()
{
double n,m;
cin>>n>>m;
int i,j;
double p[22][22]={0};
for(i=0;i<m;i++)
{
p[i][0]=pow(1/n,i);
}
for(j=1;j<n;j++)
{
p[0][j]=0;//边界特殊处理
}
for(i=1;i<m;i++)
{
for(j=1;j<n;j++)
{
p[i][j]=p[i-1][j]*((j+1)*1/n)+p[i-1][j-1]*(1-j/n);//主要特点
}
}
printf("%.4lf",p[(int)m-1][(int)n-1]);
return 0;
}