赞
踩
内存限制: 256 Mb时间限制: 1000 ms
有 n 个人围成一圈,按顺时针编号分别为 1..n。小爱从编号为 x 的人开始,沿顺时针给每个人发小礼物。但可惜她手里只有 m 份小礼物,发完即止。
其中最后一个拿到小礼物的人,我们称为 “幸运儿” ,会得到一份额外大奖。请你帮忙计算出,这个 “幸运儿” 的编号。
输入共两行:
第一行,两个正整数 n,x
第二行,一个正整数 m
输出共一行,表示 “幸运儿” 的编号
对于 50% 的数据, 1≤x,m≤n≤100
对于 100% 的数据, 1≤x,m≤n≤10^5
输入:
4 3
3
输出:
1
说明:
从第3个人开始发小礼物,3份礼物分别发给了编号为 3、4、1 的人,最后幸运儿是编号为 1 的人
解析:
本题考查求和及求余,详见代码:
- #include<bits/stdc++.h>
- using namespace std;
-
- int main() {
- int n,x,m;
- cin>>n>>x>>m;
- cout<<(x+m-1)%n;
- return 0;
- }
感谢 qq_42743835的指正,这里没有考虑到结果为0的情况,改正代码如下
- #include<bits/stdc++.h>
- using namespace std;
-
- int main() {
- int n,x,m;
- cin>>n>>x>>m;
- if ((x+m-1)%n!=0)
- cout<<(x+m-1)%n;
- else
- cout<<n;
- return 0;
- }
网友 qq_42743835 给出的更简练的解法
- #include<bits/stdc++.h>
- using namespace std;
-
- int main() {
- int n,x,m;
- cin>>n>>x>>m;
- cout<<((x-1)+(m-1))%n+1;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。