核心思路
最终的 a 记为 x(x≥1),最终的 b 必须是 x 的正倍数 kx(k≥1),代价为 ∣x−a∣+∣kx−b∣。 把 a 改成 1 后任意 b 都被整除,因此答案不超过 a−1;把 a 与 b 改成同一个数,答案也不超过 ∣a−b∣。记该上界为 U,则最优的 x 与 kx 都落在原值附近,特别地 kx≤b+U≤2⋅106。 于是最优解不可能同时满足 x>S 且 k>S(取 S=2500 时 S2>2⋅106)。分两部分枚举即可:所有 x≤S,以及所有 k≤S。
实现方法
有两个正整数 n、m。每一次操作,从二者中任选一个,将其加一或减一;操作结束后该数仍须为正整数。
求最少操作次数,使得最终有 n∣m(即 m 能被 n 整除)。
每个测试文件包含多组测试数据。第一行输入一个整数 T(1≤T≤104),表示数据组数。每组测试数据如下:
一行两个正整数 n、m(1≤n,m≤106)。
对每组数据输出一行一个整数,表示使 n 整除 m 的最少操作次数。
输入
4
4 15
11 25
7 7
10 7
输出
1
2
0
3
说明
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册