神、上帝以及老天爷

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 51558    Accepted Submission(s): 20839

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%

思路

错排公式:,当n为0或1的时候,,当n为2的时候,从第三项开始往后递推,注意数组要用long long,最后输出的时候要用%%输出百分号

AC代码

/*
* @Author: WZY
* @School: HPU
* @Date: 2018-02-26 22:29:35
* @Last Modified by: WZY
* @Last Modified time: 2018-10-17 17:35:33
*/
/**
* 坑点:打表用到的a[i]要用long long,输出时要用到转义字符输出%
*/
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <string>
#include <time.h>
#define ll long long
#define ull unsigned long long
#define ms(a) memset(a,0,sizeof(a))
#define pi acos(-1.0)
#define INF 0x7f7f7f7f
#define lson o<<1
#define rson o<<1|1
#define bug cout<<"-------------"<<endl
#define debug(...) cerr<<"["<<#__VA_ARGS__":"<<(__VA_ARGS__)<<"]"<<"\n"
const double E=exp(1);
const int maxn=1e6+10;
const int mod=1e9+7;
using namespace std;
ll a[maxn];
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
double _begin_time = clock();
#endif
int t;
int n;
ms(a);
a[0]=a[1]=0;a[2]=1;
for(int i=3;i<=21;i++)
a[i]=(i-1)*(a[i-1]+a[i-2]);
cin>>t;
while(t--)
{
cin>>n;
double ans=1.0;
for(int i=1;i<=n;i++)
ans*=i;
printf("%.2lf%%\n",a[n]*100.0/ans);
}
#ifndef ONLINE_JUDGE
long _end_time = clock();
printf("time = %lf ms.", _end_time - _begin_time);
#endif
return 0;
}

HDU 2048:神、上帝以及老天爷(错排公式,递推)的更多相关文章

  1. hdu 2048 神上帝以及老天爷

    题目 解题思路:      典型的错排题目      首先求出所有的拿错的情况,然后求出错排的所有情况,以前者除以后者就是百分比      现在求对应的所有都拿错的情况.容易知道,f(1)=0,f(2 ...

  2. ACM_错排(递推dp)

    RPG的错排 Time Limit: 2000/1000ms (Java/Others) Problem Description: 今年暑假GOJ集训队第一次组成女生队,其中有一队叫RPG,但做为集训 ...

  3. HDU2048 神,上帝以及老天爷 错排

    http://acm.hdu.edu.cn/showproblem.php?pid=2048 这是一道错排的题目 错排如下:http://baike.baidu.com/link?url=U2_H-4 ...

  4. 神、上帝以及老天爷--hdu2048(错排,递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2048 1. N张字条的所有可能排列自然是N!(分母). 现在的问题就是求N张字条的错排数f(N)(分子 ...

  5. 杭电------2048神上帝以及老天爷(C语言写)

    #include<stdio.h> ] = { -,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- }; ] = { }; long long jiec ...

  6. hdu2068 RPG的错排 组合数/递推

    #include<stdio.h> ]; long long c(int a,int b) { ,j; ;i>=a-b+,j<=b;i--,j++) sum=sum*i/j; ...

  7. HDU 1465 不容易系列之一 (错排公式+容斥)

    题目链接 Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好"一件"事情尚且不易,若想永远成功而总从不失败,那更是难上 ...

  8. hdu 1465 不容易系列之一(错排模板)

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

  9. HDU——1465不容易系列之一(错排公式)

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

随机推荐

  1. js地址多选实现,居住地,户口,职业,行业多选1

    开年来,公司就甩给我一个需求,其中一部分是对省市区地址多选,研究了一下午,发现一个已经写好的js可以使用, 遂研究改js的逻辑与代码,下面贴的是最初版本的js,仍有部分不符合需求,所以还有2.0版本的 ...

  2. pycharm搭建开发配置,远程调试,数据库配置,git配置等

    1 开发环境搭建 1.1 简介 使用虚拟机作为代码运行环境,本地使用pycharm进行代码编辑,使用远程调试功能进行debug. 1.1 安装centos虚拟机环境: 1.操作系统: 2.网络配置: ...

  3. shell IF分支判断语句

    单分支IF条件语句 if [ 条件判断式 ] then  程序: fi //结束的时候if反过来写 fi ----------------------------- /** * if test -d ...

  4. 使用DDMS查看设备内的文件系统

    system文件系统存储了一些系统相关的文件 system/app里面是系统自带的应用程序 system/fonts里面存放的是系统自带的字体 system/frameworks里面存放的是系统的一些 ...

  5. nginx:在linux上进行nginx的安装

    -----1.安装 换源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载: wget ...

  6. windows添加PDF虚拟打印机

    添加PDF虚拟打印机(果真姜还是老的辣,我摸索了两天没结果的事情,大佬轻轻松松两分钟搞定...) 这种PDF虚拟打印机的功能是将需要被打印的内容写到当前系统的指定目录下的指定文件中.整个过程都不需要连 ...

  7. mysql的取整函数

    一:四舍五入:ROUND() 二:向上取整:CEILING() 三:向下取整:FLOOR() 下面是示例代码. SELECT round('123.1'), round('123.4'), round ...

  8. MariaDB的线程及连接

    转自 linux公社 今天在这里介绍一下确认mariaDB(和MySQL一样)的链接数及线程数的方法.MariaDB和MySQL有什么不一样,现在还没有弄清楚. 这是减少数据库的负载,并能提高数据库运 ...

  9. String和StringBuffer互相转换

    String:不可变 StringBuffer:可变 StringBuffer 上的任何修改性的操作都是在同一个字符数组上进行的,所以修改其中任一个值 另一个的值也会随着改变! StringBuffe ...

  10. List在遍历中删除t元素

    法一:使用普通for循环遍历 注意: 1.从头开始循环,每次删除后 i  减一.             2.从尾开始循环. public class Main { public static voi ...