UVA10375选择与除法

来源:互联网 发布:万能数据库查看器 编辑:程序博客网 时间:2024/06/07 23:37

题意:已知C(M,N)=M!/((M-N)!N!),输入四个整数p,q,r,s(p>=q,r>=s,p,q,r,s<=10000),计算C(p,q)/C(r,s)。输出保证不超过10^8,保留5位小数。

解题思路:直接就想到了Java的BigDcimal。处理除法的时候遇到了点小问题。对于除不尽的数,Java运算

的时候会报错,所以需要用到ROUND_HALF_UP关键词,具体的看代码。

import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public class Main {     public static void main(String args[]) {     Scanner in = new Scanner(System.in);     BigDecimal n,m; int a,b,c,d; while(in.hasNext()) { n=BigDecimal.ONE; m=BigDecimal.ONE; a=in.nextInt(); b=in.nextInt(); c=in.nextInt(); d=in.nextInt(); for(int i=1;i<=a;i++) { n=n.multiply(new BigDecimal(i)); } for(int i=1;i<=c-d;i++) { n=n.multiply(new BigDecimal(i)); } for(int i=1;i<=d;i++) { n=n.multiply(new BigDecimal(i)); } for(int i=1;i<=a-b;i++) { m=m.multiply(new BigDecimal(i)); } for(int i=1;i<=b;i++) { m=m.multiply(new BigDecimal(i)); } for(int i=1;i<=c;i++) { m=m.multiply(new BigDecimal(i)); } System.out.println(n.divide(m,5,BigDecimal.ROUND_HALF_UP)); }     }}


原创粉丝点击