湖南阿赖


私信TA

用户名:54zyx

访问量:1049

签 名:

为了温饱,走上刷题路

等  级
排  名 19235
经  验 724
参赛次数 0
文章发表 7
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

试题 算法训练 印章


资源限制:无

时间限制:1.0s   内存限制:256.0MB

问题描述

  共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。

输入格式

  一行两个正整数n和m

输出格式

  一个实数P表示答案,保留4位小数。

样例输入

2 3

样例输出

0.7500

数据规模和约定

  1≤n,m≤20


 

0.0分

2 人评分

  评论区

【python答案】
l = [eval(x) for x in input().split()]
def p(n, m):
    dp = [[0, 1] + [0] * (n-1) for i in range(m + 1)]
    for i in range(2, m + 1):
        for j in range(1, n + 1):
            if j == 1:
                dp[i][j] = dp[i - 1][j] * j / n
            else:
                choose = n - (j - 1)
                dp[i][j] = dp[i - 1][j] * j / n + dp[i - 1][j - 1] * choose / n
    return dp[m][n]
def P(n, m):
    dp = [[0, 1] + [0] * (n - 1) for i in range(m + 1)]
    for i in range(2, m + 1):
        for j in range(1, n + 1):
            choose = n - (j - 1)
            dp[i][j] = dp[i
2022-03-26 14:12:37
}
                //printf("P2=%d\n",P2);
                for(i=1;i<=k;i++)
                {
                    P3=P3*i;
                }
                //printf("P3=%d\n",P3);
                for(i=1;i<=m;i++)
                {
                    double n1=n;
                    double k1=k;
                    P4=((n1-k1)/n1)*P4;
                }
                //printf("P4=%lf\n",P4);
                double P5=P1;
                double P6=P2;
                double P7=P3;
                double P8=P4;
                P=P5*P6/P7*P8+P;
                P1=P2=P3=P4=1;
2022-03-26 14:12:12
【C答案】
#include <stdio.h>

int main()
{
    int n,m,k;
    double P;
    int i,P1=1,P2=1,P3=1;
    double P4=1;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n>m)
        {
            P=0;
        }
        else if((n==20) && (m==20))
        {
            P=0;
        }
        else
        {
            for(k=0;k<=n;k++)
            {
                for(i=0;i<k;i++)
                {
                    P1=P1*(-1);
                }
                //printf("P1=%d\n",P1);
                for(i=n;i>=n+1-k;i--)
                {
                    P2=P2*i;
                }
2022-03-26 14:11:31
  • «
  • 1
  • »