题解:AT_arc150_b [ARC150B] Make Divisible
zhujiangyuan · · 题解
考虑枚举
所以确定
发现若
时间复杂度
不会向上整除分块可以参考 oi-wiki。
int cil (int x, int y) { return (x + y - 1) / y; }
int get (int x) { return x + cil (b, a + x) * (a + x) - b;}
void solve () {
int ans = 1e18;
cin >> a >> b;
if (a >= b) return cout << a - b << '\n', void ();
ans = min (b - a, get (0));
for (int l = 1, r; l < b; l = r + 1) {
r = (b - 1) / ((b - 1) / l);
if (l <= a) continue;
else ans = min (ans, get (l - a));
}
ans = min (ans, get (b - a));
cout << ans << '\n';
}