惠通教育——分组(2019NH教师C++小组测试题)

题目描述

有些孩子在院子里玩耍。您注意到以下内容:

当他们每两人一组时,多出r2人。

当他们每三人一组时,多出r3人。

当他们每五人一组时,多组r5人。

输出满足上面要求的最少的小孩数量。

输入格式

一行,三个整数: r2, r3, r5。  0<=r2<=1,  0<=r3<=2,  0<=r5<=4。

输出格式

一个正整数。

输入/输出例子1

输入:

1  0  4

输出:

9

代码思路分析

  1. 变量初始化
    • r2, r3, r5 分别代表在每两人、三人、五人一组时多出的人数。
  2. 输入
    • 通过标准输入(cin)获取这三个额外人数。
  3. 循环穷举
    • 你使用了一个循环来遍历所有可能的孩子数量。这个数量是从 02 * 3 * 5,也就是从 030。这个范围覆盖了所有可能的孩子数量的组合。
    • 为什么选择 30 作为上限?因为 2 * 3 * 5 = 30 是 2、3 和 5 的最小公倍数,这意味着任何大于或等于 30 的数都会形成与小于 30 的某个数相同的余数组合。因此,只需要检查 0 到 29 的所有数字。
  4. 检查条件
    • if (n % 2 == r2 && n % 3 == r3 && n % 5 == r5) 这行代码检查当前的数字 n 是否满足所有的余数条件。
    • n % 2 == r2 检查 n 除以 2 的余数是否等于 r2
    • n % 3 == r3 检查 n 除以 3 的余数是否等于 r3
    • n % 5 == r5 检查 n 除以 5 的余数是否等于 r5
  5. 输出结果
    • 一旦找到满足所有条件的最小的 n,就输出这个数字并结束程序。
#include<bits/stdc++.h>

#include <iostream>

#include <vector>

#include <queue>

#include <stack>

using namespace std;



int main() {

    int r2, r3, r5;

    cin >> r2 >> r3 >> r5;



    for (int n = 0; n < 2 * 3 * 5; ++n) {

        if (n % 2 == r2 && n % 3 == r3 && n % 5 == r5) {

            cout << n << endl;

            return 0;

        }

    }



    return 0;

}

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值