Hướng dẫn giải của Bài 2 (đề An Giang 2021)
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
Kim giờ đang chỉ vào số 12. Thao tác +N là quay kim thuận chiều N số, thao tác -N là quay ngược chiều N số. Tìm số mà kim chỉ sau khi thực hiện thao tác, với dữ liệu vào và ra là file bai02.inp và bai02.out.
Cách làm
Đồng hồ có 12 số nên chỉ cần lấy N chia lấy dư cho 12: r = N % 12. Nếu r < 0 (quay ngược) thì cộng thêm 12 để đưa r về khoảng từ 0 đến 11. Nếu r = 0 thì kim đang ở số 12 nên in 12, còn không thì in r.
Chương trình dùng freopen để đọc từ bai02.inp và ghi kết quả ra bai02.out. Ví dụ N = -4 cho r = -4 + 12 = 8.
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("bai02.inp", "r", stdin);
freopen("bai02.out", "w", stdout);
int n;
cin >> n;
// Đồng hồ có 12 số. Quay N số thì vị trí thay đổi N, tính theo đồng hồ 12 số
int r = n % 12;
if (r < 0) {
// Quay ngược thì cộng thêm 12 để đưa về khoảng từ 0 đến 11
r = r + 12;
}
// Vị trí 0 chính là số 12
if (r == 0) {
r = 12;
}
cout << r << "\n";
return 0;
}
Bình luận