HDU-4762 Cut the Cake

题目:

http://acm.hdu.edu.cn/showproblem.php?pid=4762

题意:

一个蛋糕上随机放n个草莓,蛋糕要切成m份,每份大小形状完全一样。求小明先选的那块蛋糕上有所有草莓的概率。

思路:

就是推公式加高精度。

首先以其中一个草莓为标准,就有n种可能,其他草莓在这个草莓所在那块的概率是1/m。

总的概率就是 n*(m^(n-1)).

然后直接高精度求解即可。

然而对于我来说到这里才懵了,,毕竟java不熟,,大数模版套过来还要求gcd化简分数,写出来真真是累。

于是还是老老实实去又学了学java的高精度。

代码:

import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    static BigInteger gcd(BigInteger a,BigInteger b){
        if(!b.equals(BigInteger.ZERO)) return gcd(b,a.mod(b));
        return a;
    }
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);

        int n,m;
        BigInteger a,b,c;
        int T = cin.nextInt();
        while(T>0)
        {
        	T--;
            m = cin.nextInt();
            n = cin.nextInt();
	        a = BigInteger.valueOf(m);
	        b = BigInteger.valueOf(n);

	        a = a.pow(n-1);
	        c = gcd(a,b);

	        System.out.println(b.divide(c)+"/"+a.divide(c));
        }
    }
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值