Trong bài toán này, cho ba số nguyên N, A, B. Có một người đứng tại tọa độ 0 di chuyển:
A bước sang phải rồi B bước sang trái. Sau đó lại sang phải. Nhiệm vụ là in vị trí cuối cùng sau N bước di chuyển.
Ví dụ minh họa:
Đầu vào - N = 4, A = 3, B = 1
Kết quả -
Giải thích -
Bước 1 -> phải 3, +3 Bước 2 -> trái 1, -1 Bước 3 -> phải 3, +3 Bước 4 -> trái 1, -1. Vị trí sau 4 bước: +3-1+3-1 = 4.
Để giải bài toán, tìm tổng số bước, tính bước phải dương, bước trái âm. Các bước lẻ sang phải, bước chẵn sang trái.
Tổng bước tính bằng công thức:
Bước = [((n+1)/2)*a - (n/2)*b]
Chương trình minh họa
#include <iostream>
using namespace std;
void finalPosition(int n, int a, int b) {
int steps = ((n + 1)/2)*a - (n/2)*b;
cout << steps;
}
int main() {
int N = 4, A = 3, B = 1;
cout << "Vị trí cuối cùng của người sau " << N << " bước là ";
finalPosition(N, A, B);
return 0;
}
Kết quả
Vị trí cuối cùng của người sau 4 bước là 4