美文网首页数据结构与算法
HDU 2048 神、上帝以及老天爷

HDU 2048 神、上帝以及老天爷

作者: itbird01 | 来源:发表于2021-11-28 08:37 被阅读0次

    HDU 2048 神、上帝以及老天爷

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

    解题思路

    1.分析题意,其实就是求,N个人都不可以对号入座的概率,直接上递推公式:an=(n-1)(an-1+an-2)

    解题遇到的问题

    后续需要总结学习的知识点

    ##解法
    import java.text.DecimalFormat;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner mScanner = new Scanner(System.in);
            int c = mScanner.nextInt();
            while (c > 0) {
                int n = mScanner.nextInt();
                double a1 = 0;
                double a2 = 1;
                double an = 0;
                if (n == 2) {
                    an = 1;
                }
    
                double sum = 2;
                for (int i = 3; i <= n; i++) {
                    an = (i - 1) * (a1 + a2);
                    a1 = a2;
                    a2 = an;
                    sum = sum * i;
                }
    
                DecimalFormat format = new DecimalFormat("#0.00");
                System.out.println(format.format(an * 100 / sum) + "%");
                c--;
            }
            mScanner.close();
        }
    }
    

    相关文章

      网友评论

        本文标题:HDU 2048 神、上帝以及老天爷

        本文链接:https://www.haomeiwen.com/subject/sqgtxrtx.html