| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 80152 | sh25_huangse | 余数相同问题 | C++ | 通过 | 0 MS | 248 KB | 1231 | 2026-01-04 15:04:04 |
#include <iostream> #include <cmath> // 用于 abs 和 sqrt #include <algorithm> // 用于 __gcd (GCC/Clang) 或自己实现 using namespace std; // 自己实现最大公约数函数(如果编译器不支持 __gcd) long long mygcd(long long a, long long b) { while (b) { long long t = a % b; a = b; b = t; } return a; } int main() { long long a, b, c; cin >> a >> b >> c; // 1. 计算三个差的绝对值 long long d1 = abs(a - b); long long d2 = abs(a - c); long long d3 = abs(b - c); // 2. 计算这三个差的最大公约数 long long g = mygcd(d1, mygcd(d2, d3)); // 如果使用GCC/Clang,可以直接用内置的 __gcd: // long long g = __gcd(d1, __gcd(d2, d3)); // 3. 找到 g 的大于1的最小约数 long long x = g; // 如果g是质数,那么g本身就是答案 for (long long i = 2; i * i <= g; i++) { if (g % i == 0) { x = i; // 找到的第一个能整除g的i就是最小的约数 break; } } // 注意:如果g==1,根据题目“数据保证x有解”,不会出现这种情况 cout << x << endl; return 0; }