I am currently practicing algorithms and DS. I have stumbled upon a question that I can't figure out how to solve. So the question's link is there:
In summary, it says that there is a number of chairs in a circle, and the position of the person (relative to a certain chair), and how many M movements he should make.
So the input is as following:
3 integer numbers N, M, X , The number of chairs, the number of times the boy should move and the first chair he will start from respectively ( 1 ≤ X ≤ N < 2^63 , 0 ≤ M < 2^63 )
So, what have I done so far? I thought about the following:
So I thought that the relative position after M movements is (x+m) % n, and since this can cause Integer overflow, I have done it like that, ((x%n) + (m%n)) % n. I have figured out that if the person has reached the last index of chair, it will be 0 so I handled that. However, it passes only 2 tests. I don't need any code to be written, I want to directed in the right way of thinking. Here is my code so far:
#include <iostream>
using namespace std;
int main() {
    long long n, m, x;
    cin >> n >> m >> x;
    // After each move, he reaches (X+1).
    // X, N chairs. 
    // ((X % N) + (M % N)) % N; 
    // Odd conideration.
    if ( m % 2 == 1) {
        m += 1;
    }
    long long position = (x % n + m % n) % n;
    if (position == 0) {
        position = n;
    }
    cout << position;
    return 0;
}
 
     
    