HDU-1202 题解
The calculation of GPA
题目大意
计算GPA
Time: 1000 ms
Memory: 32768 kB
解题思路及分析
模拟
思路比较简单,说明一下坑点:
- 输入时s和p为实型,需要定义成double,scanf需要使用%lf
- p=-1时缺考,不计算成绩
- 题干要求
如果GPA不存在,输出-1
,注意GPA不存在的条件,学分为0时即不存在GPA另外有一个小技巧,一般switch可以转换成数组,具体见代码
AC代码
#include <bits/stdc++.h>
using namespace std;
typedef long long llong;
vector<double> s, p;
int GPA[] = {0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 4};
int main()
{
int n;
while (~scanf("%d", &n))
{
double sums = 0, sump = 0;
s.clear();
p.clear();
for (int i = 0; i < n; i++)
{
double a, b;
scanf("%lf%lf", &a, &b);
if (b >= 0)
{
s.push_back(a);
p.push_back(b);
}
}
for (int i = 0; i < p.size(); i++)
{
sums += s[i];
sump += s[i] * GPA[(int)p[i]/10];
}
if (sums == 0)
{
printf("-1\n");
continue;
}
printf("%.2f\n", sump / sums);
}
return 0;
}