进(警)食(示)后人
查看原帖
进(警)食(示)后人
1314007
Zhall_Dreamy楼主2024/10/26 12:14

ans要用double;

不要用int,在求平均值的时候再转double

错误代码:

#include<bits/stdc++.h>
using namespace std;
int n,ans;
struct node
{
	int num,val;
	node() : val(0) { static int i=0; num=i++; }
	friend bool operator<(const node& a,const node& b)
	{
		return a.val<b.val;
	}
	friend istream& operator>>(istream& in,node& n)
	{
		in>>n.val;
		return in;
	}
}a[1005];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)
		cout<<a[i].num<<" ",ans+=a[i].val*(n-i);
	cout<<endl<<fixed<<setprecision(2)<<double(ans)/n;
	return 0;
}

AC代码:

#include<bits/stdc++.h>
using namespace std;
int n;
double ans;
struct node
{
	int num,val;
	node() : val(0) { static int i=0; num=i++; }
	friend bool operator<(const node& a,const node& b)
	{
		return a.val<b.val;
	}
	friend istream& operator>>(istream& in,node& n)
	{
		in>>n.val;
		return in;
	}
}a[1005];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)
		cout<<a[i].num<<" ",ans+=a[i].val*(n-i);
	cout<<endl<<fixed<<setprecision(2)<<ans/n;
	return 0;
}
2024/10/26 12:14
加载中...