这道题拿到手很快就做完了。AC之后看了一下别人的解题报告,都是用的扩展gcd。不过这题没必要这样吧。
我的做法如下:
设 y = x % k;
则原式可表示为 x = p * (x / k - y / k) + q * (x / k + (k - y) / k);
化简上式可得:
p + q = k, p * y = q * (k - y),即
(p + y) * y = k * y = q * k;
q = y, p = k - y。
代码如下:
#include <cstdio>
using namespace std;
int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
int T, x, k;
scanf("%d", &T);
while (T--)
{
scanf("%d%d", &x, &k);
printf("%d %d\n", k - x % k, x % k);
}
return 0;
}
是不是简单了很多?