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在走的話就是
然後就可以寫程式碼了:
上程式碼:
#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;
}