Bài tập  /  Bài đang cần trả lời

Giải bài có thưởng!

Viết chương trình tính xem vị trí mà Robot di chuyển là ô số mấy. Bài làm ghi lại với tên ROBOT

Trên một vòng tròn được đánh số từ 1 đến N . Một chú Robot dừng lại tại vị trí số 1 . Robot di chuyển trên vòng tròn theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ. Lệnh để Robot di chuyển là 1 số nguyên K.

Quy ước: nếu K là một số nguyên dương , Robot sẽ di chuyển theo chiều kim đồng hồ. nếu K=0 , Robot đứng yên. Nếu K là số nguyên âm , Robot di chuyển ngược chiều kim đồng hồ .

Yêu cầu
Viết chương trình tính xem vị trí mà Robot di chuyển là ô số mấy. Bài làm ghi lại với tên ROBOT***

Input
Từ file ROBOT.INP ghi hai số nguyên N và K.

Output
Ghi ra file ROBOT.OUT ghi vị trí mà Robot sau khi di chuyển K bước

Nếu vòng tròn có 5 ô thì Robot di chuyển 7 bước sẽ đến ô thứ 3

Nếu vòng tròn có 16 ô thì Robot di chuyển 19 bước sẽ đến ô thứ 4

Nếu vòng tròn có 16 ô thì Robot di chuyển -3 bước sẽ đến ô thứ 14
0 Xem trả lời
Hỏi chi tiết
18
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải quyết bài toán về vị trí của Robot trên một vòng tròn, ta sẽ sử dụng các quy tắc cơ bản như sau:

1. **Vị trí ban đầu**: Robot bắt đầu tại vị trí 1.
2. **Di chuyển theo chiều kim đồng hồ**: Nếu K dương, Robot sẽ di chuyển K bước theo chiều kim đồng hồ (vòng tròn sẽ được đánh số từ 1 đến N).
3. **Di chuyển ngược chiều kim đồng hồ**: Nếu K âm, Robot sẽ di chuyển -K (giá trị tuyệt đối của K) bước ngược chiều kim đồng hồ.
4. **Vòng tròn**: Sử dụng phép toán modulo để xử lý trường hợp vượt quá hoặc không đủ bước di chuyển.

Dưới đây là mã nguồn bằng Python thực hiện theo yêu cầu:

```python
# Đọc dữ liệu từ file ROBOT.INP
with open("ROBOT.INP", "r") as f:
# Đọc hai số nguyên N và K từ file
N, K = map(int, f.readline().split())

# Tính toán vị trí của robot sau khi di chuyển K bước
# Tính chỉ số cuối cùng dựa trên vị trí bắt đầu là 1
# Với vòng tròn, vị trí được tính với modulo
position = (1 + K - 1) % N # -1 vì vị trí bắt đầu là 1

# Nếu position bằng 0, có nghĩa là nó đang ở vị trí N
if position == 0:
position = N

# Ghi kết quả vào file ROBOT.OUT
with open("ROBOT.OUT", "w") as f:
f.write(str(position) + "\n")
```

### Cách hoạt động của mã:
1. Chúng ta đầu tiên đọc hai số nguyên N (số ô trên vòng tròn) và K (bước di chuyển của Robot).
2. Công thức `(1 + K - 1) % N` được sử dụng để tính toán vị trí mới. Ở đây, `1 + K - 1` chính là K (vị trí bắt đầu là 1), và modulo N giúp đưa vị trí về vòng tròn.
3. Nếu kết quả là 0, có nghĩa là Robot quay về ô cuối cùng (ô N).
4. Cuối cùng, kết quả được ghi vào file `ROBOT.OUT`.

### Ví dụ:
- Với N=5 và K=7, mã sẽ tính `(1 + 7 - 1) % 5 = 3`, Robot ở ô 3.
- Với N=16 và K=19, mã sẽ tính `(1 + 19 - 1) % 16 = 4`, Robot ở ô 4.
- Với N=16 và K=-3, mã sẽ tính `(1 - 3 - 1) % 16 = 14`, Robot ở ô 14.

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×