神、上帝以及老天爷

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 43826    Accepted Submission(s): 17904

Problem Description
HDU 2006'10 ACM contest的颁奖晚会隆重开始了!
为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的:

首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中;
然后,待所有字条加入完毕,每人从箱中取一个字条;
最后,如果取得的字条上写的就是自己的名字,那么“恭喜你,中奖了!”

大家可以想象一下当时的气氛之热烈,毕竟中奖者的奖品是大家梦寐以求的Twins签名照呀!不过,正如所有试图设计的喜剧往往以悲剧结尾,这次抽奖活动最后竟然没有一个人中奖!

我的神、上帝以及老天爷呀,怎么会这样呢?

不过,先不要激动,现在问题来了,你能计算一下发生这种情况的概率吗?

不会算?难道你也想以悲剧结尾?!

Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(1<n<=20),表示参加抽奖的人数。
Output
对于每个测试实例,请输出发生这种情况的百分比,每个实例的输出占一行, 结果保留两位小数(四舍五入),具体格式请参照sample output。
Sample Input
1 2
Sample Output
50.00%
题意:      
求全错位排列
思路:
全错位排列递推公式
                       f(n)=(n-1)f(n-2)+(n-1)*f(n-1)
                       f(1) = 0;   f(2) = 1;
只有两种情况:
 1、前n-1个元素已经错位排列,将第n个和前n-1个中的任意一个交换
      前n-1个排列是 f(n-1) 其中任意一个和n交换有n-1种可能,新序列仍然为错位排列  f(n-1)*(n-1)
2、 第n-1个位置中只有一个是正确的,那么需要将此正确位置与第n个交换
      除了唯一一个正确的以外,剩下的n-2个是错位排列 f(n-2),此时只需将第n个与该正确的交换就成为全错位排列,共有(n-1)种        可能,(n-1)*f(n-2)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100005
typedef long long ll;using namespace std;ll ans[25], a[25];
ll A(int x)
{if (x == 1) return a[1] = 1;return a[x] = x * A(x - 1);
}
ll F(int x)
{if (x == 1) return ans[x];if (x == 2) return ans[x];return ans[x] = (x - 1)*F(x - 1) + (x - 1)*F(x - 2);
}
int main()
{int T, n;scanf("%d", &T);ans[1] = 0; ans[2] = 1;F(20); A(20);while (T--) {scanf("%d", &n);printf("%.2f%%\n", (double)(ans[n]*1.0 /a[n]) * 100.0);}return 0;
}

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

  1. hdu 1465 不容易系列之一(错位排序)

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  2. hdu 2048 神、上帝以及老天爷

    题解: 本题主要思路是,算出i个人的总选择数a和以悲剧结尾的总选择数b,然后b/a,完成.属于递推题: 图中横杠代表人,竖杠代表签名.Ai代表i个人共有A[i]个选择,Bi起过度作用.因为最多有20人 ...

  3. 神、上帝以及老天爷(错位排序)

    Description 协会活动为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中: 然后,待所有 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. java里写分页,自己写的Java分页类
  2. 线性代数的问题:是否存在这样的矩阵,它满足正交对角化的条件,但它不是实对称矩阵呢?
  3. 第一个SpringMVC入门程序
  4. am.java_6.3.1 从am说起
  5. 小试---EF5.0入门实例1
  6. am335x reboot 命令分析
  7. IO对象流(序列化和反序列化)
  8. 数据分析师免费课程网址
  9. linux使用rsync增量保存文件与无交互自动传输
  10. 02 unix文件系统和命令
  11. Android仿苹果版QQ下拉刷新实现(二) ——贝塞尔曲线开发鼻涕下拉粘连效果
  12. 盘点苹果乔布斯憎恨Google的十大原因
  13. 浏览器了解(七)Layout
  14. MySQL 高阶语句
  15. MySQL配置root远程连接mysql授权远程
  16. 状态机和UCOSII编程的比较
  17. php判断合数,素数(质数)、合数计算器
  18. C++编译器优化:Copy Elision
  19. 亚马逊美国买家账号怎么注册
  20. 64位程序调用32位dll

热门文章

  1. python 下列表达式的值为true的是_下列表达式的值为True的是 ( )
  2. c语言geohash算法,离我最近之geohash算法(增加周边邻近编号)
  3. Cocos Creator 微信小游戏 分包设置
  4. linux中systemctl命令理解以及.service文件参数解析
  5. 获取文件哈希值_浅谈查找---哈希查找
  6. PCL教程-点云配准之成对逐步配准(两两配准)
  7. idea插件安装路径
  8. Python爬取散文网散文
  9. 大整数的乘法(分治法)
  10. 读书笔记-后端性能测试工具