试题 算法提高 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);
}
}
05-11 22:43