POJ 1322 Chocolate

POJ 1322 Chocolate

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Chocolate
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 8245   Accepted: 2186   Special Judge

Description

In 2100, ACM chocolate will be one of the favorite foods in the world.
 

“Green, orange, brown, red…”, colorful sugar-coated shell maybe is the most attractive feature of ACM chocolate. How many colors have you ever seen? Nowadays, it’s said that the ACM chooses from a palette of twenty-four colors to paint their delicious candy bits.
 

One day, Sandy played a game on a big package of ACM chocolates which contains five colors (green, orange, brown, red and yellow). Each time he took one chocolate from the package and placed it on the table. If there were two chocolates of the same color on the table, he ate both of them. He found a quite interesting thing that in most of the time there were always 2 or 3 chocolates on the table.
 

Now, here comes the problem, if there are C colors of ACM chocolates in the package (colors are distributed evenly), after N chocolates are taken from the package, what’s the probability that there is exactly M chocolates on the table? Would you please write a program to figure it out?
 

Input

The input file for this problem contains several test cases, one per line.
 

For each case, there are three non-negative integers: C (C <= 100), N and M (N, M <= 1000000).
 

The input is terminated by a line containing a single zero.
 

Output

The output should be one real number per line, shows the probability for each case, round to three decimal places.

Sample Input

5 100 2

0

Sample Output

0.625 

Source

 

题意:C种颜色的巧克力在桶中,从里面依次拿出n个巧克力,颜色同样的吃掉,求最后剩下m个巧克力的概率

当n>1000 时候,考虑奇偶性取1000或1001就可以,由于非常大的时候概率会趋于稳定,至于奇数时取1001 偶数

时取1000有些不解

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#define N 1010
using namespace std;
double dp[N][110];
int main()
{
    int c,n,m;
    while(scanf("%d",&c)!=EOF)
    {
        if(c==0)
        {
            break;
        }
        scanf("%d %d",&n,&m);
        if(m>c||m>n||(n-m)%2)
        {
            printf("0.000\n");
            continue;
        }
        if(n>1000)
        {
            n = 1000+n%2;
        }
        memset(dp,0,sizeof(dp));
        dp[0][0] = 1;
        dp[1][1] = 1;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=i&&j<=c;j++)
            {
                if(j-1>=0)
                {
                    dp[i][j] = dp[i-1][j-1]*(double)(c-j+1)/(double)c;
                }
                dp[i][j] += dp[i-1][j+1]*(double)(j+1)/(double)c;
            }
        }
        printf("%.3lf\n",dp[n][m]);
    }
    return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118765.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C语言 stat 函数「建议收藏」

    C语言 stat 函数「建议收藏」C语言stat函数stat头文件:#include<sys/stat.h>#include<unistd.h>函数原型:intstat(constchar*file_name,structstat*buf)**函数说明:**stat函数获取file_name指向文件的文件状态,并将文件信息保存到结构体buf中,执行成功返回0,失…

  • Springboot + Spring Security + jwt-token实现权限认证

    Springboot + Spring Security + jwt-token实现权限认证

  • HttpSession概述

    HttpSession概述什么是HttpSessionJavax.servlet.http.HttpSession接口表示一个会话,一个会话只能对应一个用户。我们可以把会话需要的共享数据保存到HttpSession中 获取HttpSession对象HttpSessionrequest.getSession():如果当前会话已经有了session对象,直接返回;如果没有则创建session并返回Htt…

  • MySQL数据库建表语句

    MySQL数据库建表语句**建立一个叫student的表**CREATETABLE`student`(**id为int类型设置不能为空值**`id`INTNOTNULLauto_incrementprimarykeyCOMMENT’学生id’,`name`VARCHAR(16)NOTNULLCOMMENT’学生姓名’,`sex`CHAR(1)DEFAULT’男’COMMENT’性别’…

  • Perl 正则表达式小结

    Perl 正则表达式小结Perl正则表达式小结1.m定界符“/****/”斜杠为默认定界符,若更改“/”,则须m定界符说明,m{****}2.g全局匹配3.i大小写不敏感4.s用于替换操作5.e求表达式值6.\d 匹配单个数字7.\D匹配非数字字符

  • Pycharm和Pytorch安装教程配置环境以及遇到的问题:

    Pycharm和Pytorch安装教程配置环境以及遇到的问题:Pycharm和Pytorch安装教程配置环境以及遇到的问题:注意:我们每次新建完项目,都要检查一下python解释器和conda.exe是否选择正确。一.如何找到Anconda哪个环境中安装了pytorch?Anconda提供环境,我们安装pytorch也是在一个环境下,所以不是在每个环境中都能用pytorch。那么我们如何找到我们pytorch安装的环境呢?要有NVDIA的显卡,才能用CUDA(AMD的小伙伴可能泪目了),查CUDA的版本比较简单,就不总结了。打开Anconda,输入conda

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号