hdu1202 The calculation of GPA ——水题

April 15, 2013
Hdu

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1202 题目大意:先计算出学分和点数的乘积的和,然后在除以学分之和。 思路:   很简单。只能说这道题目比较坑……不说什么了   本来是早上起来想写道水题,练练手,结果碰见这种题目,刚才我还无聊的测试了很多次,交了N遍,发现这么个坑的问题,感觉这种题目很没有意思……


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <stack>
#include <queue>
#include <cmath>
#include <algorithm>
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
using namespace std;
typedef long long int LL;
const int MAXN =  0x3f3f3f3f;
const int  MIN =  -0x3f3f3f3f;
const double eps = 1e-9;
const int dir[8][2] = {{0,1},{1,0},{0,-1},{-1,0},{-1,1},
  {1,1},{1,-1},{-1,-1}};

int main(void){
#ifndef ONLINE_JUDGE
  freopen("hdu1202.in", "r", stdin);
#endif
  int t;
  while (~scanf("%d", &t)){
    double cnt = 0, cnt1 = 0; double s, p;
    for (int i = 0; i < t; ++i){
      cin >> s >> p; cnt += s;
      if (p>=90 && p <= 100) cnt1 += 4.0 * s;
      else if (p>=80) cnt1 += 3.0 * s;
      else if (p>=70) cnt1 += 2.0 * s;
      else if (p>=60) cnt1 += 1.0 * s;
      else;
    }
    double ans = 0.0;
    ans = cnt1 / cnt;
    if (fabs(cnt1) < eps) printf("-1\n");
    else printf("%.2f\n", ans);
  }

  return 0;
}

  开始没有考虑到学分可能都为0的情况,判断fabs(ans) < eps ,OLE了,因为学分可能为0,这个时候0就做分母了。   也有的人说这种题目很没意思,要考虑很多没有意义的情况,感觉比较坑……其实这也可能是考察人的思维的严谨程度的吧,我也WA了N次……开始也以为这道题目比较坑,无聊在OJ上测试了N遍之后,发现其实关键还是自己的错……不冷静,思维不严谨。

comments powered by Disqus