zoukankan      html  css  js  c++  java
  • HDU 2048

    神、上帝以及老天爷

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


    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%
    View Code
     1 //组合数+全错位
     2 //类似题目:http://www.cnblogs.com/hxsyl/archive/2012/06/30/2570925.html 
     3 #include <iostream>
     4 #include <cstring>
     5 #include <cstdio>
     6 #include <cmath>
     7 using namespace std;
     8 
     9 const double dir = 1e-8;
    10 
    11 double ans[25];
    12 
    13 double fact(int n)
    14 {
    15      if(fabs((double)n-1)<=dir||fabs((double)n)<=dir)
    16           return 1.0;
    17      else
    18           return fact(n-1)*(double)n;
    19 }
    20 
    21 void quancuowei()
    22 {
    23      int i,j,k;
    24      ans[1] = 0.0,ans[2] = 1.0;
    25      for(i=3;i<=21;i++)
    26           ans[i] = ((double)i-1.0)*(ans[i-1] + ans[i-2]);
    27 }
    28 
    29 int main()
    30 {
    31      int T;
    32      quancuowei();
    33      cin>>T;
    34      int num;
    35      while(T--)
    36      {
    37           cin>>num;
    38           double a = ans[num];
    39           double b = fact(num);
    40           //double res = ans[num]/fact[num];  //这老有错误   
    41           double res = a/b;      
    42           printf("%.2lf%%\n",res*100);
    43      }
    44      return 0;
    45 }
     1 //组合数+全错位
     2 //类似题目:http://www.cnblogs.com/hxsyl/archive/2012/06/30/2570925.html 
     3 #include <iostream>
     4 #include <cstring>
     5 #include <cstdio>
     6 using namespace std;
     7 
     8 long long ans[25];
     9 
    10 long long fact(int n)
    11 {
    12      if(n==1||n==0)
    13           return 1;
    14      else
    15           return fact(n-1)*n;
    16 }
    17 
    18 void quancuowei()
    19 {
    20      int i,j,k;
    21      ans[1] = 0,ans[2] = 1;
    22      for(i=3;i<=21;i++)
    23           ans[i] = (i-1)*(ans[i-1] + ans[i-2]);
    24 }
    25 
    26 int main()
    27 {
    28      int i,j,k,T;
    29      quancuowei();
    30      cin>>T;
    31      int num;
    32      while(T--)
    33      {
    34           cin>>num;
    35           double res = (double)((double)ans[num]/(double)fact(num));
    36           printf("%.2lf%%\n",res*100);
    37      }
    38      return 0;
    39 }
  • 相关阅读:
    VC 读取服务器上的文件(HTTP方式) [转]
    ActiveX控件打包成Cab置于网页中自动下载安装 [转]
    C# 使用xenocode混淆加密【转】
    jenkins插件安装失败更改插件源
    jenkins调用shell脚本 输出带颜色字体
    Centos7 搭建最新 Nexus3 Maven 私服
    jenkins构建java项目找不到命令mvn,java的解决方法
    如何在 Linux 中找到你的 公网IP 地址
    CentOS 7安装Zabbix 3.4
    Linux常见服务器——DHCP服务器的搭建
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2662916.html
Copyright © 2011-2022 走看看