警告后人(警钟长鸣)
  • 板块灌水区
  • 楼主zhuyucheng6046
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/30 17:48
  • 上次更新2024/7/30 19:15:11
查看原帖
警告后人(警钟长鸣)
1312199
zhuyucheng6046楼主2024/7/30 17:48

P1223题目

8AC 2WA代码(正确的在后面)

#include<bits/stdc++.h>
using namespace std;
struct i
{
	long long  a,haoma,dengdai;
}c[1000+10];
bool cmp(i k,i l)
{
	return k.a<l.a;
}
int main()
{
	long long n;
	cin>>n;
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i].a;
		c[i].haoma=i;
	}
	int u=0;
	sort(c+1,c+n+1,cmp);
	for(int i=1;i<=n;i++)
	{cout<<c[i].haoma<<" "; u++;
	if(u==n) cout<<endl;
			c[i].dengdai+=c[i-1].a+c[i-1].dengdai;
			sum+=c[i].dengdai;
	}

	printf("%.2f",(double)sum/n);
	return 0;
}

如果你这么写,就会踩进编者挖的坑里,因为累加器所累加的数值可能会超过int类型,要这样:

#include<bits/stdc++.h>
using namespace std;
struct i
{
	long long  a,haoma,dengdai;
}c[1000+10];
bool cmp(i k,i l)
{
	return k.a<l.a;
}
int main()
{
	long long n;
	cin>>n;
	long long sum=0;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i].a;
		c[i].haoma=i;
	}
	int u=0;
	sort(c+1,c+n+1,cmp);
	for(int i=1;i<=n;i++)
	{cout<<c[i].haoma<<" "; u++;
	if(u==n) cout<<endl;
			c[i].dengdai+=c[i-1].a+c[i-1].dengdai;
			sum+=c[i].dengdai;
	}
	printf("%.2f",(double)sum/n);
	return 0;
}
2024/7/30 17:48
加载中...