Hướng dẫn giải của IF15: Khoảng cách
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Hướng dẫn giải
Cho tọa độ hai điểm A (x, y) và B (u, v). Cần in ra tọa độ của điểm có khoảng cách đến gốc tọa độ lớn hơn. Nếu bằng nhau thì in điểm A.
Cách làm
- Đọc x, y, u, v.
- Tính bình phương khoảng cách của A là xx + yy và của B là uu + vv. Không cần căn bậc hai vì so sánh bình phương cho cùng kết quả.
- Nếu của A lớn hơn hoặc bằng của B thì in x và y. Ngược lại in u và v.
#include <bits/stdc++.h>
using namespace std;
int main() {
long long x, y, u, v;
cin >> x >> y >> u >> v;
// Bình phương khoảng cách từ mỗi điểm đến gốc tọa độ (không cần căn bậc hai vẫn so sánh được)
long long dA = x * x + y * y;
long long dB = u * u + v * v;
// Nếu hai điểm cách đều gốc tọa độ thì in điểm A
if (dA >= dB) {
cout << x << " " << y << "\n";
} else {
cout << u << " " << v << "\n";
}
return 0;
}
Bình luận