【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 进行授权