题目描述

题目链接:年会抽奖__牛客网

今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:
1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;
2. 待所有字条加入完毕,每人从箱中取一个字条;
3. 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?

输入描述:

输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。

输出描述:

对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。

示例1

输入

2

输出

50.00%

题目解读:

这道题的题目好懂,就是每一个人把写入名字的纸条放入抽奖箱中,然后再依次去拿,求所有人都拿不到自己名字的概率。

这个题目难在找规律,如果规律能找到,那确实就是个二星题,找不到那就是个四星题了。  这个题可以参考另一道题,    发邮件__牛客网

本题是在发邮件的基础上,要求求概率,其他思路一致。

解题思路:

首先如何求所有人 都拿不到自己名字的情况,那就先从一个人开始讨论,一个人拿错的可能性是0,两个人是 1,三个人 是 2,这里直接说,不好理解,画图说四个人的情况,

如图所示,当A 指向 B(因为要全部错位,所以排除掉A 指向A的情况),B就有说法了,

B如果指向A,那剩下C和D玩,就只有一种情况会全部错位,而如果B指向除A以外的其他个体,那就有两种情况会全部错位,这里就发现,由于B指向还是不指向A,衍生出两种情况,

两种情况要分别处理,用公式表示就是,B指向A 是 有 (4-2)个个体的情况(意思就是,只有两个个体全错的可能),B不指向A是 有(4-1)个个体的情况。

总结一下,当A指向B时,全部错位的可能有 1(两个个体的情况)+2(三个个体的情况),也就是 3 种可能性。当A指向C 或者D时,也有 1+2种情况,所以可以推出公式 ,

当n >2 时,全部错位的可能性为 (n-1)*(probability[ n-1 ] +probability[ n-2 ] ),右边括号里面是数组,probability[ 1 ] = 0,probability[ 2 ] = 1 ,然后不断带入就能求出 n个人全部错位的可能性。

但是这个题,多了一步,还要求n个人对应的全部可能性,这个要找规律,1个人是 1,2个人是 2,3个人是 6,得到规律为 n * sum[n-1] ,sum数组是n个人对应的全部可能性。

把总的可能性和全部错位的可能性都求出来后,这个题,就没难度了。

代码注释:

// write your code here
import java.util.*;
public class  Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);while (scan.hasNext()) {int n = scan.nextInt();// 这里是求全部错位的n个人对应的可能性的数组double[] probabilitys = new double[21];probabilitys[1]=0;probabilitys[2]=1;for (int i = 3; i <= 20; i++) {probabilitys[i] = (n - 1) * (probabilitys[i - 1] + probabilitys[i - 2]);} // 这里是求n个人对应的全部可能性的数组double[] sumProbabilitys = new double[21];sumProbabilitys[1] = 1;for(int i=2;i<= 20;i++){sumProbabilitys[i] =i* sumProbabilitys[i-1]; }double odds =  (probabilitys[n] / sumProbabilitys[n])*100 ;System.out.printf("%.2f",odds);System.out.println("%");}}
}

【编程题 】年会抽奖(详细注释 易懂)相关推荐

  1. 【编程题 】星际密码(详细注释 易懂)

    题目描述 题目链接:星际密码__牛客网      星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码.表的规则是:n对应的值 ...

  2. 【编程题 动态规划】最长公共子序列(详细注释 易懂)

    题目描述: 题目链接:最长公共子序列__牛客网 来源:牛客网 我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列.子串中的字符不一定在原字符串中连续. 例如字符串&q ...

  3. SAP CRM BOL编程基础,代码+详细注释

    网络上可以找到一些使用BOL查询.维护数据的DEMO,但几乎都是单纯的代码,缺乏说明,难以理解.本文除了代码外,还给出了详细的注释,有助于理解BOL编程中的一些基本概念. 这是一篇翻译的文章,你可能会 ...

  4. 中国电子学会青少年编程能力等级测试图形化四级编程题:抽奖

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...

  5. C语言有趣的编程题:最详细解答谁是凶手?

    前言 提示:今天遇到一道很有意思的题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个.以下为4个嫌疑犯的供词. A说:不是我. B说:是C. C说:是D. D说:C在胡说 已 ...

  6. (抄送列表,年会抽奖)笔试强训

    博主简介:想进大厂的打工人 博主主页:@xyk: 所属专栏: JavaEE初阶 目录 文章目录 一.[编程题]抄送列表 二.[编程题]年会抽奖 一.[编程题]抄送列表 链接:抄送列表__牛客网 来源: ...

  7. 【Python】python初学者应该知道与其他语言差异化的高效编程技巧(附测试代码+详细注释)

    目录 1. 交换变量 2. 集合去重 3. 列表推导.集合推导和字典推导 4. 统计字符串中各个字符出现的次数 5.优雅地打印JSON数据 6.行内的if语句 6. 符合正常逻辑的数值比较 7. 田忌 ...

  8. 分析编程题c语言,二级C语言部分上机编程题详细分析

    <二级C语言部分上机编程题详细分析>由会员分享,可在线阅读,更多相关<二级C语言部分上机编程题详细分析(6页珍藏版)>请在人人文库网上搜索. 1.二级C语言部分上机编程题详细分 ...

  9. c语言编程题餐饮服务打分,求详细分析C语言题餐饮服务质量调查打分题和答案..._质量员考试_帮考网...

    bangsaizhuo 新兵答主 11-09 TA获得超过6761个赞 二.填空题 1. ___变量__是指在程序运行过程中,值可以发生变化的量. 2.C语言是一种____区分_(区分/不区分)字母大 ...

  10. zip()函数以及编程题:最长公共前缀(代码简单易懂)

    1.zip函数 zip()函数返回一个zip类型的对象,可以转换为list或dict #定义列表 a = [1, 2, 3] b = [4, 5, 6]# 打包为元组的列表,而且元素个数与最短的列表一 ...

最新文章

  1. Vertica 分区表设计(续)
  2. SQL UNION 操作符
  3. 那些年,我和发哥在恒大的日子
  4. python去重保留唯一一个值_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...
  5. tda7294参数引脚功能_电容在电路中的几种功能
  6. 手机上网有几种方式?
  7. 读取sd卡下图片,由图片路径转换为bitmap
  8. 震惊!华为服务器操作系统竟然开源了!
  9. Javascript特效:tab标签
  10. MTK camera驱动浅析(1)
  11. 番茄时间管理法:一个番茄是如何让你工作更有效率的
  12. Swift高仿喜马拉雅APP之一Charles抓包、图片资源获取等
  13. 达摩院python教程视频_达摩院官方刚刚发布了最新的Python教程,整套427集系统学习视频...
  14. 基于阿里云的双活灾备方案的设计
  15. redies 须知小结
  16. 运动世界校园一直显示服务器开小差,运动世界校园跑步异常 运动世界跑步成绩异常怎么办...
  17. Android 关于Excel表格的读与写(包括图片、字体颜色,语言)
  18. 回溯算法--LeetCode-78 子集、LeetCode-90 子集Ⅱ
  19. 高等数学(第七版)同济大学 习题10-2(中5题) 个人解答
  20. 报错说 filename 不能写成 [name].[chunkhash:8].js ,改成[hash]就可以了

热门文章

  1. linux spi flash id,SPI读flash的ID问题
  2. 易灵思FPGA-软件Efinity和Modelsim联仿设置
  3. acs cisco 查看log_Cisco ASA 5510 防火墙 配置笔记
  4. 《数字图像处理》题库1:选择题
  5. cl.nd77.pw index.php,Loop in template
  6. java action上传文件_Java struts Action +ActionForm上传文件
  7. UE4C++吃豆子游戏
  8. FPGA产生m序列及其应用
  9. C++ 八股文(一)
  10. 发布个小软件给大伙玩玩