每日一题---蓝桥杯猴子吃包子问题Java解决

题目

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。
输入格式
  输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数。
输出格式
  输出一行,包含1个实数,表示吃完所有包子的时间。
样例输入
4 3 2 20 30 15 2
样例输出
22.50
数据规模和约定
  0<x<100;0<y<100;0<z<100;0<x1<=1000000;0<y1<=10000000;0<z1<=10000000;0<p<=1000

分析

  • 就题上给的这个p的限制范围就大离谱,就算是double精度也就在小数点后六位,所以第一感觉就是这题不能用double做,BigDecima(一般用不到)就很好的解决了这一问题。
  • 但BigDecima是没有办法进行“+”“-”“*”“/”运算的,这就需要我们了解它的几个方法和一个技术
  • 方法:
  • BigDecima两对象相加

add(BigDecimal augend)
返回 BigDecimal ,其值是 (this + augend) ,其标为 max(this.scale(), augend.scale()) 。

  • BigDecima两对象相除

divide(BigDecimal divisor)
返回BigDecimal ,其值为(this / divisor) ,优先级为(this.scale() - divisor.scale()) ; 如果不能表示确切的商(因为它具有非终止的十进制扩展),则抛出一个ArithmeticException 。

  • BigDecima两对象相除余小数点后scale位,RoundingMode为采用的技术

divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
返回一个 BigDecimal ,其值为 (this / divisor) ,其比例为指定。

  • 技术:
  • ROUND_HALF_DOWN
    四舍五入模式向“最近邻居”转弯,除非这两个邻居都是等距离的,在这种情况下,这是倒圆的。

代码

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * @Author: Re
 * @Date: 2021/2/6 21:37
 */
public class Main {
    private static void chiTao(){
        Scanner scanner=new Scanner(System.in);
        BigDecimal a,b,c,d,e,f,sum;
        int g;
        a = scanner.nextBigDecimal();
        b = scanner.nextBigDecimal();
        c = scanner.nextBigDecimal();
        d = scanner.nextBigDecimal();
        e = scanner.nextBigDecimal();
        f = scanner.nextBigDecimal();
        g = scanner.nextInt();
        sum = d.divide(a,g,BigDecimal.ROUND_HALF_DOWN).add(e.divide(b,g,BigDecimal.ROUND_HALF_DOWN).add(f.divide(c,g,BigDecimal.ROUND_HALF_DOWN)));
        System.out.print(sum);
    }
    public static void main(String[] args) {
        chiTao();
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值