时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐学会了自定义函数,BoBo老师给他出了个问题,根据以下公式计算m的值。
其中 max3函数为计算三个数的最大值,如: max3(1, 2, 3) 返回结果为3。
输入描述:
一行,输入三个整数,用空格隔开,分别表示a, b, c。
输出描述:
一行,一个浮点数,小数点保留2位,为计算后m的值。
输入
1 2 3
输出
0.30
方法:DecimalFormat
算法没什么好讲的,题目也很清晰,但是输出浮点数的时候出现了一个小问题。
之前不知道有这个类,所以之前输出这个浮点数的时候我都是用
System.out.printf("%.2f",x);
结果一直通过不了,多次尝试被罚了7个时,等比赛结束,我再次提交的时候发现printf只能通过90%的测试数据,经过大神指点,我使用DecimalFormat。
System.out.println(new DecimalFormat("0.00").format(x));
结果,直接通过了。。。
当时的心情,,真是,,唉。。
然后我就好好了解了一下这个DecimalFormat。
DecimalFormat 类,可以帮你将数字格式化成需要的样子。
importjava.text.DecimalFormat;
public class TestNumberFormat{
public static void main(String[]args){
doublepi=3.1415927; //圆周率
//取一位整数
System.out.println(new DecimalFormat("0").format(pi)); //3
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi)); //3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi)); //3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16%
DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
Java源代码
package t_牛客_哈理工新生赛_1108;
import java.text.DecimalFormat;
import java.util.Scanner;
/**
* @Title: I.java
* @author Baisu
* @date 2019年11月9日
* @version 1.0
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
double x = Math.max(a+b, c); //Math类自带max函数,可以直接使用
double y = Math.max(a, b+c); //max(a,b+c,c)和max(a,b,b+c)都是在判断a与b+c中的最大值
System.out.println(new DecimalFormat("0.00").format(x/(2*y)));
}
}