1082 射击比赛 (20 分)(附测试用例,逻辑分析)

写在前面

  • 题目很简单,3分钟内a题
  • 运动员的编号通过·整型·处理
  • 距离计算,平方和即可(浪费资源,无须真实距离)

测试用例

input : 
3
0001 5 7
1020 -1 3
0233 0 -1

output : 
0233 0001

ac代码

  • 距离计算,多余开平方
#include
#include 
using namespace std;

int main()
{
    int n;
    scanf("%d",&n);

    int x,y, cur_id, max_id, min_id;
    double max_dist=0.0, min_dist=10000.0, cur_dist=0.0;
    for(int i=0; i<n; i++)
    {
        scanf("%d%d%d", &cur_id,&x,&y);
        cur_dist = sqrt(x*x+y*y);
        if(cur_dist<min_dist) {
            min_dist = cur_dist;
            min_id = cur_id;
        }
        if(cur_dist>max_dist) {
            max_dist = cur_dist;
            max_id = cur_id;
        }
    }
    printf("%04d %04d",min_id, max_id);

    return 0;
}
  • 参考代码
#include 
using namespace std;
int main() {
    int n, id, x, y, maxid, maxdis = -1, minid, mindis = 99999;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> id >> x >> y;
        int dis = x * x + y * y;
        if (dis > maxdis) maxid = id;
        if (dis < mindis) minid = id;
        maxdis = max(maxdis, dis);
        mindis = min(mindis, dis);
    }
    printf("%04d %04d", minid, maxid);
    return 0;
}

你可能感兴趣的:(PAT(乙级),算法比赛相关)