首页 > 试题广场 >

Grading

[编程题]Grading
  • 热度指数:9882 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    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.
示例1

输入

20 2 15 13 10 18

输出

14.0
#include <stdio.h>
#include <math.h>


 main(){
	float g1,g2,g3,gj,t,p;
	

	while(scanf("%f %f %f %f %f %f",&p,&t,&g1,&g2,&g3,&gj)!=EOF){
		float avg=(g1+g2)/2;
		float max,x1,x2,x3;
			if(g1>g2&&g1>g3){
		max=g1;
	}else if(g2>g1&&g2>g3){
		max=g2;
	}else if(g3>g1&&g3>g2){
		max= g3;
	}
		if(abs(g1-g2)<=t)
		{
			printf("%.1f",avg);
		}else 
		{
		if(abs(g3-g1)<=t&&abs(g3-g2)<=t){
			
			printf("%.1f",max);
		}else if(abs(g3-g1)>t&&abs(g3-g2)>t)
		{
			printf("%.1f",gj);
		}else{
			x1=abs(g3-g1);
			x2=abs(g3-g2);
			if(abs(x1-t)<abs(x2-t)){
				printf("%.1f",(g3+g1)/2);
			}else{
					printf("%.1f",(g3+g2)/2);
			}
		}
	}
}

}

 

编辑于 2024-03-08 21:23:53 回复(0)
我的以下代码在IDE中运行是完全符合要求的,输出结果也完全一样,可是牛客网上过不去,这是不是别太死板了#include<stdio.h> #include <math.h>  float max(float x,float y,float z){float M;M=(x>y)?x:y;M=(M>z)?M:z;return M;
}int main() {float P,T;while(scanf("%f %f",&P,&T)!=EOF&&T<=P){float G1,G2,G3,Gj;while(scanf("%f %f",&G1,&G2)!=EOF){if(fabsf(G1-G2)<=T){
                printf("%.1f",(G1+G2)/2);
            }else{
                scanf("%f",&G3);if((fabsf(G1-G3)<=T)&&(fabsf(G2-G3)<=T)){
                    printf("%.1f",max(G1,G2,G3));break;
                }else if(fabsf(G1-G3)<=T){
                    printf("%.1f",(G1+G3)/2);
                }else if(fabsf(G2-G3)<=T){
                    printf("%.1f",(G2+G3)/2);
                }else{
                    scanf("%f",&Gj);
                    printf("%.1f",Gj);
                }
            }
        }
    }return 0;
}
编辑于 2024-01-20 03:47:43 回复(0)
//需要注意的是强制转换一定不要忘记(float)(a+b)/2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int rever(int a,int b){
    if(a-b>=0){
        return a-b;
    }else{
        return b-a;
    }
}
int main(){
    int p,t,a,b,c,d;
    while(scanf("%d %d %d %d %d %d",&p,&t,&a,&b,&c,&d)!=EOF){
        int maxs=0;
        float x;
        if(rever(a,b)<=t){
            x=(float)(a+b)/2;
            printf("%.1f",x);
        }else{
            if(rever(c,a)>t&&rever(c,b)>t){
                printf("%d",d);
            }else if(rever(c,a)<=t&&rever(c,b)<=t){
                maxs=fmax(a,b);
                maxs=fmax(maxs,c);
                printf("%d",maxs);
            }else{
                if(rever(c,a)<=t){
                    x=(float)(a+c)/2;
                    printf("%.1f",x);
                }else{
                    x=(float)(c+b)/2;
                    printf("%.1f",x);
                }
            }
        }
    }
    return 0;
}

发表于 2022-02-16 14:06:01 回复(0)