Điểm nào gần gốc toạ độ hơn
Muốn biết điểm nào gần gốc toạ độ O(0, 0) hơn, ta so sánh khoảng cách từ chúng tới O.
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: cpp-basics, conditionals.
Nội dung đề bài
Mô tả bài toán
Muốn biết điểm nào gần gốc toạ độ O(0, 0) hơn, ta so sánh khoảng cách từ chúng tới O. Vì căn bậc hai là hàm tăng, so sánh khoảng cách cho cùng kết quả với so sánh bình phương khoảng cách — và bình phương khoảng cách của một điểm nguyên luôn là số nguyên, nên ta tránh được hoàn toàn số thực và sai số làm tròn.
Yêu cầu
Cho hai điểm P1(x1, y1) và P2(x2, y2) với toạ độ nguyên. Hãy so sánh d1 = x1 * x1 + y1 * y1 với d2 = x2 * x2 + y2 * y2 và in ra:
- 1 nếu P1 gần gốc toạ độ hơn (d1 < d2),
- 2 nếu P2 gần gốc toạ độ hơn (d2 < d1),
- 0 nếu hai điểm cách gốc toạ độ như nhau (d1 == d2).
Quy ước nộp bài
Nộp chương trình solution.cpp đọc dữ liệu từ stdin và in kết quả ra stdout. In đúng một số nguyên 1, 2 hoặc 0 trên một dòng duy nhất.
Input
- Một dòng duy nhất gồm bốn số nguyên x1 y1 x2 y2
(-1000 <= x1, y1, x2, y2 <= 1000), cách nhau bởi dấu cách.
Output
In ra đúng một số nguyên: 1, 2 hoặc 0 theo quy ước ở trên. Chỉ in một số trên một dòng, không in thêm chữ nào khác.
Ràng buộc
- Toạ độ nguyên, |xi|, |yi| <= 1000, nên d1, d2 nhỏ hơn 2 * 10^6 và vừa với kiểu
int.
- Thời gian cho mỗi bộ dữ liệu là 1 giây.
Ví dụ 1
Input
3 4 1 1
Output
2
Ví dụ 2
Input
1 1 3 4
Output
1
Giải thích
Với dữ liệu vào:
ta có d1 = 9 + 16 = 25 và d2 = 1 + 1 = 2. Vì d2 < d1 nên điểm thứ hai gần gốc toạ độ hơn, kết quả là:
Với dữ liệu vào 2 3 3 2 thì d1 = 4 + 9 = 13 và d2 = 9 + 4 = 13, hai giá trị bằng nhau nên kết quả là 0.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
