入门赛E题有无更简单的思路?
  • 板块学术版
  • 楼主Infinitas
  • 当前回复15
  • 已保存回复16
  • 发布时间2024/6/14 21:12
  • 上次更新2024/6/15 08:47:16
查看原帖
入门赛E题有无更简单的思路?
209844
Infinitas楼主2024/6/14 21:12

如题,我的代码如下

#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;

int pos(int n)
{
	return (n > 0) ? n : 0;
}

int main()
{
	int a[12],s = 0;
	double p;
	for(int i = 0;i < 12;i++)
	{
		scanf("%d",&a[i]);
		s += a[i];
		//printf("%d\n",s); 
		if(s <= 310) p = 3*a[i];
		if(s > 310 && s <= 520) p = 3*pos(310-(s-a[i]))+3.3*((s-a[i])>310?a[i]:(s-310));
		if(s > 520) p = 3*pos(310-(s-a[i]))+3.3*pos(520-(310<(s-a[i])?s-a[i]:310))+4.2*((s-a[i])>520?a[i]:s-520);
		printf("%.1f\n",p);
	}
	return 0;
}

这份代码AC了,但是花了我挺长时间。感觉这道题应该有简单的做法,但我想不出来。求助各位。

2024/6/14 21:12
加载中...