1. 程式人生 > >CodeForces 659 A. Round House(簡單數學推理)

CodeForces 659 A. Round House(簡單數學推理)

傳送門
A. Round House
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Vasya lives in a round building, whose entrances are numbered sequentially by integers from 1 to n. Entrance n and entrance 1 are adjacent.

Today Vasya got bored and decided to take a walk in the yard. Vasya lives in entrance a and he decided that during his walk he will move around the house b entrances in the direction of increasing numbers (in this order entrance n should be followed by entrance 1). The negative value of b corresponds to moving |b| entrances in the order of decreasing numbers (in this order entrance 1 is followed by entrance n). If b = 0, then Vasya prefers to walk beside his entrance.

Illustration for n = 6, a = 2, b =  - 5.
Help Vasya to determine the number of the entrance, near which he will be at the end of his walk.

Input
The single line of the input contains three space-separated integers n, a and b (1 ≤ n ≤ 100, 1 ≤ a ≤ n,  - 100 ≤ b ≤ 100) — the number of entrances at Vasya’s place, the number of his entrance and the length of his walk, respectively.

Output
Print a single integer k (1 ≤ k ≤ n) — the number of the entrance where Vasya will be at the end of his walk.

Examples
input
6 2 -5
output
3
input
5 1 3
output
4
input
3 2 7
output
3
Note
The first example is illustrated by the picture in the statements.

題目大意:
有n個數從小到大排列,需要注意的首尾相接 也就是一個環,然後有一個人站在a處,他需要走b步,看能夠到達什麼地方,如果b是<0的那麼就是倒著走,否則就是正著走(語言表達能力太差。。。)

解題思路:
其實這個題目我沒就是分析一下就行,注意分情況討論一下,假設b>0,那麼我們只需要(a+b)%n取餘就行了,注意取餘之後如果是0的話就輸出n,當b<0的時候,我們首先判斷一下他能不能到達1,然後如果到達了1在走的話就是

nabs((a(b)))然後這個公式對n取餘,同樣注意取餘之後是0的情況

然後就可以寫程式碼了:
上程式碼:

#include <iostream>

using namespace std;

int main()
{
    int n, a, b;
    while(cin>>n>>a>>b)
    {
        if(b == 0)
            cout<<a<<endl;
        else if(b < 0)
        {
            if(a+b >= 1)
            {
                cout<<(a+b)<<endl;
            }
            else
            {
                cout<<n+((a+b)%n)<<endl;
            }

        }
        else
        {
            if((a+b)%n)
                cout<<(a+b)%n<<endl;
            else
                cout<<n<<endl;
        }
    }
    return 0;
}