文章

【GESP】C++一级练习 luogu-B2071, 余数相同问题

一级知识点while循环和取余计算基础练习。

luogu-B2071

题目要求

描述

已知三个正整数 $a$, $b$, $c$。现有一个大于 $1$ 的整数 $x$, 将其作为除数分别除 $a$, $b$, $c$, 得到的余数相同。

请问满足上述条件的 $x$ 的最小值是多少?数据保证 $x$ 有解。

输入

一行,三个不大于 $1000000$ 的正整数 $a$, $b$, $c$,两个整数之间用一个空格隔开。

输出

一个整数,即满足条件的 $x$ 的最小值。

输入样例-1

300 262 205

输出样例-1

19


题目分析

  • 读取三个正整数 $a$, $b$, $c$ 的值
  • 初始化变量 $i$ 为 $2$,作为除数
  • 遍历从 $2$ 开始的所有整数 $i$
  • 检查 $a$, $b$, $c$ 除以 $i$ 的余数是否相同
  • 如果相同,输出 $i$ 并退出循环

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
    int a, b, c; // 定义三个整数a, b, c,用于存储输入的三个正整数
    cin >> a >> b >> c; // 从输入流中读取a, b, c的值
    int i = 2; // 初始化变量i,用于作为除数
    while (true) { // 无限循环,直到找到满足条件的i
        if ((a % i == b % i) && (b % i == c % i)) { // 检查a, b, c除以i的余数是否相同
            cout << i; // 如果相同,输出i
            break; // 跳出循环
        }
        i++; // 如果不相同,i自增1,继续下一轮循环
    }
    return 0; // 返回0,表示程序执行成功
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

本文由作者按照 CC BY 4.0 进行授权