Round House (CodeForces - 659A)(绕圈圈,走到哪?)
Round House
time limit per test 1 second
memory limit per test 256 megabytes
input standard input
output standard 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个出口(第n个出口与第1个出口相连),小明的妈妈嫌他打游戏太久,让他出去遛狗,小明决定从第a个出口开始,沿入口序号的递增方向走b(若b < 0 则沿反方向走),问最后从哪个入口回家。
基础数学题,只要 (a+b)%n 就是答案
这里会出现两个问题:① b 可以为负数,若 a+b<0 怎么办,还不知道会少几个n。根据题上给的范围(1 ≤ n ≤ 100, 1 ≤ a ≤ n, - 100 ≤ b ≤ 100),懒办法就可以在 a+b 后再加 100*n 即可。原式变为(a+b+100*n)%n。
②(a+b)%n 结果为 0 时,表示小明走到了第 n 个出口,而不是第 0 个。
# include <cstdio>
using namespace std;
int main()
{
int n, a, b;
scanf("%d%d%d",&n,&a,&b);
int ans = (a+b+n*100)%n;
if(!ans) printf("%d\n",n);
else printf("%d\n",ans);
return 0;
}
上一篇: 康托展开式与其逆运算的实现