试题 算法提高 GPA
问题描述
输入A,B两人的学分获取情况,输出两人GPA之差。
输入格式
输入的第一行包含一个整数n表示A的课程数,以下n行每行Si,Ci分别表示第i个课程的学分与A的表现。
GPA=Σ(Si*Ci) / Σ(Si)。
特殊地,如果Ci是’P’或者’N’(对应于通过与不通过),则第i个课程不记入GPA的计算(即当其不存在)。
A读入结束后读入B,B的输入格式与A相同。
保证2人的Σ(Si)非零
输出格式
输出A的GPA - B的GPA的值,保留2位小数(四舍五入)
Tips:当A和B的分数相近时输出0.00。
样例输入
2
1 10
2 N
2
1 10
1 5
样例输出
2.50
数据规模和约定
输入的所有数字均为不超过100的非负整数
import java.util.Scanner;
public class Main {
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int num1 = 0, num2 = 0;
for (int i = 0;i < n;i++){
int s1 = sc.nextInt();
String s=sc.next();
if (Character.isDigit(s.charAt(0))) {
int c1=Integer.valueOf(s);
num1+=s1*c1;
num2+=s1;
} else {
continue;
}
}
double temp1=num1*1.0/num2;
n = sc.nextInt();
int num3 = 0, num4 = 0;
for (int i = 0;i < n;i++){
int s1 = sc.nextInt();
String s=sc.next();
if (Character.isDigit(s.charAt(0))) {
int c1=Integer.valueOf(s);
num3+=s1*c1;
num4+=s1;
} else {
continue;
}
}
// System.out.println(num3);
double temp2=num3*1.0/num4;
// System.out.println(temp1);
// System.out.println(temp2);
if (Math.abs(temp1 - temp2)<1e-2f) {
System.out.println("0.00");
return;
}
System.out.printf("%.2f",temp1-temp2);
}
}