Description

协会活动为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中; 然后,待所有字条加入完毕,每人从箱中取一个字条; 最后,如果取得的字条上写的就是自己的名字,那么“恭喜你,中奖了!” 大家可以想象一下当时的气氛之热烈,毕竟中奖者的奖品是大家梦寐以求的Twins签名照呀!不过,正如所有试图设计的喜剧往往以悲剧结尾,这次抽奖活动最后竟然没有一个人中奖! 我的神、上帝以及老天爷呀,怎么会这样呢? 不过,先不要激动,现在问题来了,你能计算一下发生这种情况的概率吗? 不会算?难道你也想以悲剧结尾?!

Input

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(1< n<=20),表示参加抽奖的人数。

Output

对于每个测试实例,请输出发生这种情况的百分比,每个实例的输出占一行, 结果保留两位小数(四舍五入),具体格式请参照sample output

Sample Input

1
2

Sample Output

50.00%

解题思路:这是一个错位排序的问题,在这里谢谢关于错位排序的原理以及思路。

错位排列:

第一步,错排第一号元素(将第一号元素排在k位置),有n-1种方法。

第二步,错排其余n-1个元素。紧接第一步的结果,若第一号元素落在第k个位置,第二步就先把K排好

1、 k 号元素排在第1个位置,留下的 n - 2 个元素在与它们的编号集相等的位置集上“错排”,有 f(n -2) 种方法;
2、 k 号元素不排第 1 个位置,这时可将第 1 个位置“看成”第 k 个位置(也就是说本来准备放到k位置为元素,可以放到1位置中),于是形成(包括 k 号元素在内的) n - 1 个元素的“错排”,有 f(n - 1) 种方法。据加法原理,完成第二步共有 f(n - 2)+f(n - 1) 种方法。 
根据乘法原理, n 个不同元素的错排种数

错排公式 f(1)=0,f(2)=1;f(n)=(n-1)(f(n-1)+f(n-2))

 1 #include <iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 #define maxn 200
 8 int main()
 9 {
10     int t,n;
11     double a[maxn];
12      a[1]=0;a[2]=1;
13     for(int i=3;i<=22;i++)
14     {
15         a[i]=(i-1)*(a[i-1]+a[i-2]);
16     }
17     scanf("%d",&t);
18     while(t--)
19     {
20         double sum=1;
21         scanf("%d",&n);
22
23         for(int i=1;i<=n;i++)
24             sum*=i;
25         printf("%.2lf%%\n",a[n]/sum*100);
26     }
27 }

转载于:https://www.cnblogs.com/wkfvawl/p/8998468.html

神、上帝以及老天爷(错位排序)相关推荐

  1. 【HDU 2048】神、上帝以及老天爷(错位排序)

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  2. HDU2048 神、上帝以及老天爷【递推】

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. 神、上帝以及老天爷(递推公式)

    神.上帝以及老天爷(递推公式) Problem Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动 ...

  4. HDU神、上帝以及老天爷(错排公式)

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. hdu 2048 错排公式 神、上帝以及老天爷

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  6. HDUOJ 2048 - 神、上帝以及老天爷(错排公式)

    原题: Problem Description -- 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中: 然后,待所有字条加入完毕,每人从箱中取一个字条: 最后,如果取得的字条上写的就是 ...

  7. O - 神、上帝以及老天爷

    HDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己 ...

  8. HDU2048神、上帝以及老天爷 (错排公式)

    错排问题,又称更列问题,是组合数学中的问题之一.对于它的研究最早可以追溯到十八世纪,当时他被数学家尼古拉·伯努利和欧拉研究,因此在历史上也被称为伯努利--欧拉的错装信封问题.这个问题有许多具体的版本, ...

  9. One Day One Step 之全错位排序

     One Day One Step 之全错位排序 今天做了一道题,是关于全错位排序的.在高中的时候,对排列组合一直很头痛,所以今天趁这个机会,好好学习学习! 先来看一下题目吧! 神.上帝以及老天爷 ...

最新文章

  1. GPU与CPU交互技术
  2. 5 网络层----IP协议相关技术
  3. iextensionunit类_Java ICompilationUnit.reconcile方法代码示例
  4. boost::core模块实现分配const指针
  5. Log4Net简单使用
  6. 解决java无法切分字符串,.split()无效
  7. java总结第四次//常用类
  8. [转]Zend Framework + Smarty 应用实例
  9. base64 convert to file
  10. scala 函数中嵌套函数_Scala函数–声明,定义,调用和嵌套函数
  11. POJ-1426-Find The Multiple
  12. 将GridView数据导出到Excel实现
  13. IIS、MySQL、Redis环境搭建
  14. CAN FD协议简介
  15. python3 yield from用法
  16. vue项目手机端适配
  17. ROS学习笔记6 URDF建立机器人模型(以双轮差速小车为例)
  18. 如何用Scrum做变革管理的落地实施
  19. 18-《致橡树》-舒婷
  20. 上海市大数据技术与应用创新中心成立

热门文章

  1. 重构 — 勿以善小而不为
  2. python的pygame模块详解_python游戏模块学习之pygame常规操作讲解
  3. [bzoj5050][线段树]建造摩天楼
  4. 进化的学习曲线:方差与泛化误差
  5. Android蓝牙开发系列文章-玩转BLE开发(一)
  6. 打开计算机窗口的快捷键是什么,打开多个窗口,用哪个快捷键可以将窗口切换?...
  7. Java并发编程AQS详解
  8. 远程控制电脑软件全方位测评,远程控制工具哪家强
  9. 2023 QQ强制聊天加好友临时会话接口跳转单页HTML源码
  10. 维视智造定义“工业机器视觉检测大脑”VisionBank AI 视觉软件发布会圆满召开