这道题开始得54分,代码如下:
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
struct js{
long long id,t;
}data[1005];
bool cmp(js a,js b){
return a.t<b.t;
}
int main(){
long long n;
cin>>n;
for(long long i=1;i<=n;i++){
cin>>data[i].t;
data[i].id=i;
}
stable_sort(data+1,data+n+1,cmp);
for(long long i=1;i<=n;i++){
cout<<data[i].id<<" ";
}
float sum=0;
for(long long i=n-1;i>=1;i--){
sum+=data[n-i].t*i;
}
cout<<endl;
cout<<fixed<<setprecision(2)<<sum/n;
}
我检查数据,发现只有平均时间有问题,最后发现只需要把float sum=0;改为double sum=0;就满分了。
请问这是float和double精度不同导致的结果不同么?求大佬解答。