Bài tập F87: Điểm dừng xe
Xét bài toán: Các điểm dừng đón, trả khách của xe buýt cách đều nhau một đoạn k mét. Điểm dừng đầu tiên ở đầu phố. Như vậy tính từ đầu phố, xe buýt dừng ở các điểm 0, k, 2k, 3k, ... (mét). Nhà của Tâm ở ngay đầu phố. Để kết hợp rèn luyện thể lực, Tâm thường đi bộ tới trường. Hôm nay, khi đi bộ được n mét, Tâm chợt nhớ cần phải tới sớm theo lời hẹn với một người bạn nên quyết định sẽ bắt xe buýt ở trạm tiếp theo gần nhất. Hãy xác định Tâm còn phải đi thêm bao nhiêu mét nữa.
Em hãy lập trình giải bài toán trên. Trước khi lập trình cần tóm tắt bài toán, xác định thuật toán và cách tổ chức dữ liệu.
Dữ liệu: Nhập vào từ thiết bị vào chuẩn, dòng đầu tiên chứa số nguyên k, dòng thứ hai chứa số nguyên n (1 $\leq$ k, n $\leq$ 2×10$^{9}$).
Kết quả: Đưa ra thiết bị ra chuẩn một số nguyên là độ dài đoạn đường cần đi tiếp (tính theo mét).
Ví dụ:
Input |
Output |
800 2100 |
300 |
Bài Làm:
Tóm tắt bài toán (Mô hình toán học)
Cho:
- Các điểm (được đánh dấu) cách đều nhau k mét.
- Điểm đầu có toạ độ là 0.
- Điểm x có toạ độ là n.
Yêu cầu: Xác định khoảng cách gần nhất từ điểm x tới một điểm được đánh dấu.
Thuật toán và cách tổ chức dữ liệu:
- Bước 1. Nhập số nguyên k và n.
- Bước 2. Tính d là khoảng cách từ x tới điểm bên trái của x.
- Bước 3. Tìm min của khoảng cách từ x tới điểm bên trái x và bên phải của x.
- Bước 4. Đưa ra kết quả.
Tham khảo chương trình sau: