且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

HDOJ(HDU) 2201 熊猫阿波的故事(概率问题)

更新时间:2022-08-20 19:39:17

Problem Description
凡看过功夫熊猫这部电影的人都会对影片中那只憨憨的熊猫阿波留下相当深的印象,胖胖的熊猫阿波自从打败了凶狠强悍的雪豹泰龙以后,在和平谷的地位是越来越高,成为谷中第一的功夫大师。并因此他父亲经营的面馆的生意也越来越好,店里每天都会有许多慕名而来吃面和想拜阿波为师的人。
一日,阿波收到了一张请柬,请柬里说在遥远的美国将召开全球比武大会,特邀请阿波过去做嘉宾。阿波当然很高兴,因为自己长这么大都还没出过和平谷,更何况是出国去那遥远的美国。于是他托人买了当晚的机票,阿波来到机场发现其他乘客们正准备按机票上的号码(1,2,3,…..,n)依次排队上飞机,由于阿波是第一次坐飞机,所以他想先一步登机,因此他插队第一个登上了飞机,并且他也不看机票,随机的选择了一个座位坐下了。乘客们都很气氛,他们想:既然阿波都不遵守规定,那么我为什么要遵守呢?因此后面所有的人也都随意地找了位置坐下来,并且坚决不让座给其他的乘客。
现在的问题是这样的:在这样的情况下,第i个乘客(除去熊猫阿波外)坐到原机票位置的概率是多少?

Input
输入包含多组测试数据,每组数据占一行,包含两个整数,分别是n和m(n>=m),n表示共有n个乘客(包括阿波),m表示第m个乘客。

Output
对于每组数据,请输出第m个乘客(除去熊猫阿波外)坐到原机票位置的概率是多少?(结果保留2位小数)
每组输出占一行。

Sample Input
2 1
11 3

Sample Output
0.50
0.09

注意:不要被那个熊猫影响了,你就把它当做第一个人坐上去的就行。

思路:
求n位乘客中第m位坐到正确位置的概率。
我们假设有10位乘客,那么就有10个座位。首先熊猫坐了一个,
要使第m位乘客能坐到正确的座位,那么熊猫肯定不能坐在那位
乘客的位置上,于是得出了一个概率是9/10。假设m=2,那么除
开熊猫的第一位乘客也不能坐在第2位乘客的位置上,而且是从
剩下的9个位置中选取座位,得出概率8/9。那么第2位乘客就必
须从剩下的8个座位选出自己的那个位置,得出概率1/8。将3个
概率相乘,得到概率1/10。再假设n=10,m=3的情况,根据前面的
原理,可得答案1/10,我们可以发现,结果就是1/n。

n个乘客有A(n,n)种安排座位的方式,第i个乘客固定坐在自己的座位,则有A(n-1,n-1)种安排座位的方式。
概率就是P=A(n-1,n-1)/A(n,n)=1.0/n 。

这个问题,我们可以类比抽签,其他人怎么坐,不会影响我们坐,因为是随机的!
所以不管哪个人 概率都是1/n

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int m = sc.nextInt();
            System.out.printf("%.2f",(double)1.0/n);
            System.out.println();
        }
    }
}