题解 P5082 【成绩】
这道题现在的空间范围为128MB,而原来只有5MB,所以今天我还是来写更难的一种。 由于不能开数组,所以必须要边输入,边处理。这里还有一个数学中的简化——原式=(每一科的满分之和3-每一科的实际得分之和2)÷每科所扣除分数的和=(a3-b2)÷c(并且a-b=c)=(a+2c)÷c=a÷c+2c÷c=a÷c+2(最后推出来的最简公式)这样,这道题就很简单了,另外注意,两个for循环中不能用cin输入,因为如果cin输入,会超时80%的点。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a;
double ans=0,res=0;
for(int i=0;i<n;++i)
{
scanf("%d",&a);
ans+=(double)a;
res+=(double)a;
}
for(int i=0;i<n;++i)
{
scanf("%d",&a);
res-=(double)a;
}
cout<<fixed<<setprecision(6)<<(ans/res+2);
return 0;
}