#include <iostream>
#include <vector>
using namespace std;
double poirev(double a)
{
if(a>=90&&a<=100)
return 4;
if(a>=85&&a<=89)
return 3.7;
if(a>=82&&a<=84)
return 3.3;
if(a>=78&&a<=81)
return 3.0;
if(a>=75&&a<=77)
return 2.7;
if(a>=72&&a<=74)
return 2.3;
if(a>=68&&a<=71)
return 2.0;
if(a>=64&&a<=67)
return 1.5;
if(a>=60&&a<=63)
return 1.0;
if(a<60)
return 0;
return 0;
}
int main() {
int n;
while(cin>>n)
{ int sumcre=0;
double gpa=0;
vector<int> cre;
vector<double> jd;
for(int i=0;i<n;i++)
{ int temp;
cin>>temp;
sumcre+=temp;
cre.push_back(temp);
}
for(int i=0;i<n;i++)
{
int temp;
cin>>temp;
jd.push_back(poirev(temp));
}
for(int i=0;i<n;i++)
{
gpa+=cre[i]*jd[i];
}
printf("%.2f\n",gpa/sumcre);
}
}
// 64 位输出请用 printf("%lld")
我服了,这么简单的代码疯狂WA到怀疑自己,最后发现小于60分的情况是返回0 1是后面的要求的标号,不是返回0.1

京公网安备 11010502036488号