专栏文章
B4355 [GESP202506 一级] 值日
B4355题解参与者 10已保存评论 10
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @miope7wa
- 此快照首次捕获于
- 2025/12/02 22:58 3 个月前
- 此快照最后确认于
- 2025/12/02 22:58 3 个月前
欢迎报名洛谷网校,期待和大家一起进步!
小杨每 天值日一次,意味着他值日的天数一定是 的倍数,比如第 天,第 天,第 天,以此类推。同样,小红值日的天数也一定是 的倍数。他们要再次相遇在同一天值日,那么这一天必须同时是 的倍数和 的倍数。题目要求我们找出“至少多少天后”,也就是寻找满足这个条件的最小天数。这个数在数学上被称为 和 的“最小公倍数”。
那么,我们如何找到这个最小公倍数呢?最直接、最容易理解的方法就是从小到大进行枚举。我们可以从第 1 天开始,依次检查第 2 天、第 3 天……对于每一天,我们都去判断它是否既能被 整除,又能被 整除。我们找到的第一个同时满足这两个条件的数字,就一定是最小的那个,也就是我们想要的答案。因为我们是从小到大顺序查找的,所以第一个找到的必然是最小值。
在编写 C++ 代码时,这个思路可以很方便地用一个循环来实现。我们可以设置一个循环,让一个变量(比如 )从 1 开始不断地增加。在每一次循环中,我们都用取余运算符(
%)来检查 是否能同时被 和 整除。如果 i % m == 0 并且 i % n == 0 这两个条件同时成立,那么 就是我们寻找的答案。此时,我们就可以输出 ,然后结束程序。参考代码:
CPPfor (int i = 1; ; ++i) {
if (i % m == 0 && i % n == 0) {
cout << i << endl;
break;
}
}
相关推荐
评论
共 10 条评论,欢迎与作者交流。
正在加载评论...
