Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 교대로 좌우로 N걸음 이동한 후의 위치


이 문제에서 세 개의 정수 N, A, B가 주어졌습니다. 좌표 0에 서 있는 사람이 이동합니다.

오른쪽으로 한 걸음, 왼쪽으로 B걸음 . 그럼 다시 맞아. 우리의 임무는 N 이동 후 요소의 최종 위치를 인쇄하는 것입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력 - N =4, A =3, B =1

출력 -

설명 -

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