题目描述
几天前,三元湖船模竞速拉开了帷幕,参加竞速的总共有 n 艘船,我们将三元湖水面当做平面直角坐标系,对于每一艘船都有一个起点 (a,b)和终点 (c,d) 以及行驶所用的时间 t,并且有一个值 status表示是否翻船,现在给你这些船的这些数据,请你输出冠军的平均速度。
输入
第 1行,一个数 n,表示参与竞速的船模的数量
第 2−(n+1)行,每行 6 个数 a,b,c,d,t,status,依次表示起点的横纵坐标,终点的横纵坐标,行驶所用时间,是否翻船(0为未翻船,1 为翻船)。
输出
一个数,即冠军的平均速度,保留两位小数。
输入输出样例
样例输入 #1
5
1.1 1 2 3 4 0
1 1.2 5 5 3 1
1 1 5.3 5 3 0
2 2 1 0.4 5 0
9 9 0 0 3.5 0
样例输出 #1
3.64
提示
冠军是未翻船的船中平均行驶速度最快的。
不要考虑为什么有的船翻了但是还能到达终点。
建议使用平面两点间的距离公式来计算两点的距离。
参考解答
//2022.11.30
#include <stdio.h>
#include<math.h>
struct a
{
float a;
float b;
float c;
float d;
float t;
int status;
float len;
float v;
};
int main()
{
int n;
scanf("%d",&n);
struct a race[50];
for(int i=0;i<n;i++)
{
scanf("%f%f%f%f",&race[i].a,&race[i].b,&race[i].c,&race[i].d);
scanf("%f%d",&race[i].t,&race[i].status);
}
for(int i=0;i<n;i++)
{
race[i].len=sqrt(pow((race[i].c-race[i].a),2)+pow((race[i].d-race[i].b),2));
race[i].v=race[i].len/race[i].t;
}
float fast=race[0].v;
for(int i=0;i<n;i++)
{
if(race[i].status==0)
{
if(race[i].v>fast)
fast=race[i].v;
}
}
printf("%.2f",fast);
return 0;
}