ในปัญหานี้ เราได้รับจำนวนเต็มสามตัว N, A และ B มีคนยืนที่พิกัด 0 เคลื่อนที่
A ก้าวไปทางขวา และจากนั้น B ก้าวไปทางซ้าย แล้วอีกครั้งขวา งานของเราคือพิมพ์ตำแหน่งสุดท้ายขององค์ประกอบหลังจาก N การเคลื่อนที่
มาดูตัวอย่างเพื่อเข้าใจปัญหา:
Input - N = 4, A = 3, B = 1
Output -
Explanation -
1st move -> right 3, +3 2nd move -> left 1, -1 3rd move -> right 3, +3 4th move -> left 1, -1 Position after 4 moves, +3-1+3-1 = 4.
เพื่อแก้ปัญหานี้ เราต้องหาจำนวนก้าวทั้งหมดที่คนคนนั้นเดิน โดยนับการเคลื่อนที่ขวาเป็นบวก และการเคลื่อนที่ซ้ายเป็นลบ การเคลื่อนที่ครั้งคี่ทั้งหมดเป็นขวา และการเคลื่อนที่คู่ทั้งหมดเป็นซ้าย
จำนวนก้าวทั้งหมดจะถูกคำนวณโดยสูตร:
Steps = [((n+1)/2)*a - (n/2)*b]
ตัวอย่าง
โปรแกรมแสดงการประกอบโซลูชันของเรา:
#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 << "The final position of the person after " << N << " steps is ";
finalPosition(N, A, B);
return 0;
}
ผลลัพธ์
The final position of the person after 4 steps is 4