【编程题 】年会抽奖(详细注释 易懂)
题目描述
题目链接:年会抽奖__牛客网
今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:
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("%");}}
}
【编程题 】年会抽奖(详细注释 易懂)相关推荐
- 【编程题 】星际密码(详细注释 易懂)
题目描述 题目链接:星际密码__牛客网 星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码.表的规则是:n对应的值 ...
- 【编程题 动态规划】最长公共子序列(详细注释 易懂)
题目描述: 题目链接:最长公共子序列__牛客网 来源:牛客网 我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列.子串中的字符不一定在原字符串中连续. 例如字符串&q ...
- SAP CRM BOL编程基础,代码+详细注释
网络上可以找到一些使用BOL查询.维护数据的DEMO,但几乎都是单纯的代码,缺乏说明,难以理解.本文除了代码外,还给出了详细的注释,有助于理解BOL编程中的一些基本概念. 这是一篇翻译的文章,你可能会 ...
- 中国电子学会青少年编程能力等级测试图形化四级编程题:抽奖
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...
- C语言有趣的编程题:最详细解答谁是凶手?
前言 提示:今天遇到一道很有意思的题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个.以下为4个嫌疑犯的供词. A说:不是我. B说:是C. C说:是D. D说:C在胡说 已 ...
- (抄送列表,年会抽奖)笔试强训
博主简介:想进大厂的打工人 博主主页:@xyk: 所属专栏: JavaEE初阶 目录 文章目录 一.[编程题]抄送列表 二.[编程题]年会抽奖 一.[编程题]抄送列表 链接:抄送列表__牛客网 来源: ...
- 【Python】python初学者应该知道与其他语言差异化的高效编程技巧(附测试代码+详细注释)
目录 1. 交换变量 2. 集合去重 3. 列表推导.集合推导和字典推导 4. 统计字符串中各个字符出现的次数 5.优雅地打印JSON数据 6.行内的if语句 6. 符合正常逻辑的数值比较 7. 田忌 ...
- 分析编程题c语言,二级C语言部分上机编程题详细分析
<二级C语言部分上机编程题详细分析>由会员分享,可在线阅读,更多相关<二级C语言部分上机编程题详细分析(6页珍藏版)>请在人人文库网上搜索. 1.二级C语言部分上机编程题详细分 ...
- c语言编程题餐饮服务打分,求详细分析C语言题餐饮服务质量调查打分题和答案..._质量员考试_帮考网...
bangsaizhuo 新兵答主 11-09 TA获得超过6761个赞 二.填空题 1. ___变量__是指在程序运行过程中,值可以发生变化的量. 2.C语言是一种____区分_(区分/不区分)字母大 ...
- zip()函数以及编程题:最长公共前缀(代码简单易懂)
1.zip函数 zip()函数返回一个zip类型的对象,可以转换为list或dict #定义列表 a = [1, 2, 3] b = [4, 5, 6]# 打包为元组的列表,而且元素个数与最短的列表一 ...
最新文章
- Vertica 分区表设计(续)
- SQL UNION 操作符
- 那些年,我和发哥在恒大的日子
- python去重保留唯一一个值_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...
- tda7294参数引脚功能_电容在电路中的几种功能
- 手机上网有几种方式?
- 读取sd卡下图片,由图片路径转换为bitmap
- 震惊!华为服务器操作系统竟然开源了!
- Javascript特效:tab标签
- MTK camera驱动浅析(1)
- 番茄时间管理法:一个番茄是如何让你工作更有效率的
- Swift高仿喜马拉雅APP之一Charles抓包、图片资源获取等
- 达摩院python教程视频_达摩院官方刚刚发布了最新的Python教程,整套427集系统学习视频...
- 基于阿里云的双活灾备方案的设计
- redies 须知小结
- 运动世界校园一直显示服务器开小差,运动世界校园跑步异常 运动世界跑步成绩异常怎么办...
- Android 关于Excel表格的读与写(包括图片、字体颜色,语言)
- 回溯算法--LeetCode-78 子集、LeetCode-90 子集Ⅱ
- 高等数学(第七版)同济大学 习题10-2(中5题) 个人解答
- 报错说 filename 不能写成 [name].[chunkhash:8].js ,改成[hash]就可以了
热门文章
- linux spi flash id,SPI读flash的ID问题
- 易灵思FPGA-软件Efinity和Modelsim联仿设置
- acs cisco 查看log_Cisco ASA 5510 防火墙 配置笔记
- 《数字图像处理》题库1:选择题
- cl.nd77.pw index.php,Loop in template
- java action上传文件_Java struts Action +ActionForm上传文件
- UE4C++吃豆子游戏
- FPGA产生m序列及其应用
- C++ 八股文(一)
- 发布个小软件给大伙玩玩