问题描述
输出射击距离原点最近和最远的选手编号。
题目分析
我们将id作为int类型输入,输出时可以用printf规划格式,这样就简便了很多,不需要对字符串进行处理。
边输入边计算距离,不断更新最大距离和最小距离,并用两个int变量记录选手id。最后按照4位的格式输出(不足补0).
代码
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
struct Player{
int id;
int x;
int y;
double distance;
};
int main()
{
int n;
cin>>n;
Player player[n];
int i,j;
double max=1000,min=-1;
int player1,player2;
for(i=0;i<n;i++)
{
cin>>player[i].id>>player[i].x>>player[i].y;
player[i].distance=(double)sqrt(player[i].x*player[i].x+player[i].y*player[i].y);
if(max>player[i].distance) {
max=player[i].distance;
player1=i;
}
if(min<player[i].distance)
{
min=player[i].distance;
player2=i;
}
}
printf("%04d %04d",player[player1].id,player[player2].id);
return 0;
}
答题用时11min
Q82——finish√