题目1002:Grading

题目描述:

    Grading hundreds of thousands of Graduate Entrance Exams is a hard work. It is even harder to design a process to make the results as fair as possible. One way is to assign each exam problem to 3 independent experts. If they do not agree to each other, a judge is invited to make the final decision. Now you are asked to write a program to help this process.
    For each problem, there is a full-mark P and a tolerance T(<P) given. The grading rules are:
    • A problem will first be assigned to 2 experts, to obtain G1 and G2. If the difference is within the tolerance, that is, if |G1 - G2| ≤ T, this problem's grade will be the average of G1 and G2.
    • If the difference exceeds T, the 3rd expert will give G3.
    • If G3 is within the tolerance with either G1 or G2, but NOT both, then this problem's grade will be the average of G3 and the closest grade.
    • If G3 is within the tolerance with both G1 and G2, then this problem's grade will be the maximum of the three grades.
    • If G3 is within the tolerance with neither G1 nor G2, a judge will give the final grade GJ.

输入:

    Each input file may contain more than one test case.
    Each case occupies a line containing six positive integers: P, T, G1, G2, G3, and GJ, as described in the problem. It is guaranteed that all the grades are valid, that is, in the interval [0, P].

输出:

    For each test case you should output the final grade of the problem in a line. The answer must be accurate to 1 decimal place.

样例输入:
20 2 15 13 10 18
样例输出:
14.0

这题相对来说算是很简单的,用几个判断就能做出来,不知道怎么九度上面写的难度是满星4颗星.
 1 import java.util.Scanner;
 2  
 3 public class Main{
 4     public static void main(String[] args){
 5         Scanner in=new Scanner(System.in);
 6         while(in.hasNext()){
 7             int P, T, G1, G2, G3, GJ;
 8             P=in.nextInt();
 9             T=in.nextInt();
10             G1=in.nextInt();
11             G2=in.nextInt();
12             G3=in.nextInt();
13             GJ=in.nextInt();
14             in.nextLine();
15             double answer;
16             int t=Math.abs(G1-G2);
17             if(t<=T){
18                 answer=(G1+G2)/2.0;
19             }
20             else{
21                 int t1=Math.abs(G1-G3);
22                 int t2=Math.abs(G2-G3);
23                 if(t1<=T&&t2>T){
24                     answer=(G1+G3)/2.0;
25                 }
26                 else if(t1>T&&t2<=T){
27                     answer=(G2+G3)/2.0;
28                 }
29                 else if(t1<=T&&t2<=T){
30                     answer=Math.max(Math.max(G1, G2),G3);
31                 }
32                 else{
33                     answer=GJ;
34                 }
35             }
36             System.out.printf("%.1f\n", answer);
37         }
38     }
39 }
40 /**************************************************************
41     Problem: 1002
42     User: 0000H
43     Language: Java
44     Result: Accepted
45     Time:110 ms
46     Memory:18836 kb
47 ****************************************************************/

 

posted @ 2015-04-11 18:23  打小孩  阅读(221)  评论(0编辑  收藏  举报