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遍之后,发现其实关键还是自己的错……不冷静,思维不严谨。