求最小正整數 N,使得對給定的 m₁, m₂, ..., mᵢ,均有 `N ≡ mⱼ - a (mod mⱼ)`。即 `N + a` 能被所有 mⱼ 整除。等價於求 `LCM(m₁, ..., mᵢ) - a`。i < 10, a, mⱼ < 100。
#include
typedef long long ll;
ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
int main() {
int n, a;
while (~scanf("%d%d", &n, &a) && (n || a)) {
ll ans = 1;
for (int i = 0; i < n; ++i) {
int m; scanf("%d", &m);
ans = lcm(ans, m);
}
printf("%lld\n", ans - a);
}
return 0;
}
HDU 1788 披著「中國剩餘定理」外衣,實則是 **LCM 直接計算**。同餘條件特殊(餘數均為模數減同一常數),導致問題極大簡化。閱讀題目時應敏銳發現數學結構,避免套用通用 CRT 模板過度設計。