【九度OJ】1002【模拟】

来源:互联网 发布:php mysql 三表联查 编辑:程序博客网 时间:2024/05/01 07:33

浙大2011年机试题目,也是比较简单的一道题目。只要按照题目中所给的grading rules 一步一步模拟过程即可


需要注意的是:

1.求result时,等号右边要变成double类型的

2.Math类的abs方法,参数为double类型的

3.Java精确小数点方法  参考了网址 http://blog.csdn.net/tianlincao/article/details/5654880  中的方法 String.format("%.1f", result)  String类中的方法,格式化result小数点后一位,并为float类型


代码:

package Test1;


import java.util.Scanner;
import java.lang.Math;


public class Test2 {


/**
* by qr 2014-8-6 jobdu 1002
*/
public static void main(String[] args) {


Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
String num = scan.nextLine();
String cases[] = num.split(" ");
/*
* p=cases[0] t=case[1] g1=cases[2] g2=cases[3] g3=cases[4]
* gj=cases[5]
*/


int p = Integer.parseInt(cases[0]);
int t = Integer.parseInt(cases[1]);
int g1 = Integer.parseInt(cases[2]);
int g2 = Integer.parseInt(cases[3]);
int g3 = Integer.parseInt(cases[4]);
int gj = Integer.parseInt(cases[5]);
double result = 0;


// simulate the process
if (Math.abs((double) (g1 - g2)) <= t) {
result = ((double)g1 + g2) / 2;  //result都要变成double
} else if (Math.abs((double) (g3 - g1)) <= t  //求绝对值
&& Math.abs((double) (g3 - g2)) <= t) {
// max of g1,g2,g3
result = max(g1, g2, g3);
} else if (Math.abs((double) (g3 - g1)) <= t
|| Math.abs((double) (g3 - g2)) <= t) {
double temp1=Math.abs((double) (g3 - g1));
double temp2=Math.abs((double) (g3 - g2));
if(temp1>temp2)
result=((double)g3+g2)/2;
else
result=((double)g3+g1)/2;
} else if (Math.abs((double) (g3 - g1)) > t
&& Math.abs((double) (g3 - g2)) > t) {
result=(double)gj;
}

System.out.println(String.format("%.1f", result));
//1代表小数点后1位,f代表为浮点型
}


}


private static double max(int g1, int g2, int g3) {
int max = 0;
if (g1 > g2) {
if (g1 > g3)
max = g1;
else
max = g3;
} else {
if (g2 > g3)
max = g2;
else
max = g3;
}
return max;
}


}

0 0
原创粉丝点击