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 }
  • 相关阅读:
    PATA 1071 Speech Patterns.
    PATA 1027 Colors In Mars
    PATB 1038. 统计同成绩学生(20)
    1036. 跟奥巴马一起编程(15)
    PATA 1036. Boys vs Girls (25)
    PATA 1006. Sign In and Sign Out (25)
    读取web工程目录之外的图片并显示
    DOS命令
    java连接oracle集群
    servlet
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2662916.html
Copyright © 2011-2022 走看看