当前位置:   article > 正文

上海计算机学会2023年8月月赛C++丙组T1幸运儿_2023c++成绩

2023c++成绩

原题链接:幸运儿

幸运儿

内存限制: 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 的人 

解析:

 本题考查求和及求余,详见代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int n,x,m;
  5. cin>>n>>x>>m;
  6. cout<<(x+m-1)%n;
  7. return 0;
  8. }

感谢 qq_42743835的指正,这里没有考虑到结果为0的情况,改正代码如下

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int n,x,m;
  5. cin>>n>>x>>m;
  6. if ((x+m-1)%n!=0)
  7. cout<<(x+m-1)%n;
  8. else
  9. cout<<n;
  10. return 0;
  11. }

网友 qq_42743835 给出的更简练的解法

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int n,x,m;
  5. cin>>n>>x>>m;
  6. cout<<((x-1)+(m-1))%n+1;
  7. return 0;
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/439964?site
推荐阅读
相关标签
  

闽ICP备14008679号