[蓝桥杯]算法提高 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的非负整数
 
 
大晚上不能写题,到点就该睡。。。又钻牛角尖了,一道简单题写了两个小时。。。我弱智了。。。
不 我要甩锅  想到1e-6然后交了无数遍都不行
结果心里告诉自己有可能想复杂了 回去看题 发现精确度并没有那么高  0.01就行
好的 我还是弱智了一把
两个小时看电影他不香吗???
 
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 
 6 using namespace std;
 7 double gpa[2];
 8 
 9 int main(){
10     int n, p, cnt = 2;
11     
12     for(int j = 0 ; j < 2 ; j++){
13         double ans1 = 0, ans2 = 0;
14         cin >> n;
15         for(int i = 0 ; i < n ; i++){
16             char q[3];
17             scanf("%d %s", &p, q);
18         
19             if(q[0] != 'P' && q[0] != 'N'){
20                 int aa = 0;
21                 for(int k = 0 ; k < 3 ; k++){
22                     if(q[k] >= '0' && q[k] <= '9'){
23                         int tt = q[k] - '0';
24                         aa = aa * 10 + tt;
25                     }
26                 }
27                 ans1 += p * aa;
28                 ans2 += p;
29             }
30         }
31         gpa[j] = ans1 / ans2;
32     }
33     
34     double res = gpa[0] - gpa[1];
35     if(res >= 0.01 || res <= -0.01)  printf("%.2lf\n", res);
36     else  cout << "0.00" << endl;
37     
38     return 0;
39 }

 

posted @ 2020-01-21 19:44  zyddd915  阅读(870)  评论(0编辑  收藏  举报