用Java解决牛客网华为机试题目小球落地5次后所经历的路程

103 篇文章 1 订阅
89 篇文章 0 订阅

题目描述

假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?

最后的误差判断是小数点6位

 

 

输入描述:

 

输入起始高度,int型

输出描述:

 

分别输出第5次落地时,共经过多少米第5次反弹多高

 

注意点:本体需要精准的计算数据 所以我用到了 BigDecimal,其中注意的一点是 BigDecimal中的b = b.divide(new BigDecimal("2"),6,BigDecimal.ROUND_HALF_UP);,意思是取小数点后六位有效数字,

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigDecimal;

public class Main {

	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String s ;
		
		while((s = br.readLine()) !=null) {
			
			BigDecimal b = new BigDecimal(s);
            
			BigDecimal b1 = new BigDecimal("0");
            
			b1 = b1.add(b);
            
			int sum  = 0;
            
			while(sum<4) {
				sum++;
                
				b1 = b1.add(b);
                
				b = b.divide(new BigDecimal("2"),6,BigDecimal.ROUND_HALF_UP);
				
				
				
			}
			
			System.out.println(b1);
			System.out.println( b.divide(new BigDecimal("2"),6,BigDecimal.ROUND_HALF_UP));
			
		}
	}

}

 

思路2 本题目给我们的答案是从1米出弹跳5次后的经历路程(设为a),所以如果我们想求弹跳n次后的路程那只需要计算n*a

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;

public class Main {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String s;
		while ((s = br.readLine()) != null) {

			System.out.println(new BigDecimal("2.875").multiply(new BigDecimal(s)));
			System.out.println(new BigDecimal("0.03125").multiply(new BigDecimal(s)));

		}

	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值