题解 CF1244C 【The Football Season】
暴力可过,补一个扩展欧几里得的解法。
记
对于
根据线性方程定理,不定方程
设
Python 代码如下:
def exgcd(a, b):
if b == 0:
return a, 1, 0
gcd, y, x = exgcd(b, a % b)
y -= a // b * x
return gcd, x, y
n, p, a, b = map(int, input().split())
gcd, x, y = exgcd(a, b)
if p % gcd != 0:
print(-1)
exit()
p //= gcd
a0 = a // gcd
b0 = b // gcd
x *= p
y *= p
min_y = (y % a0 + a0) % a0
x -= (min_y - y) // a0 * b0
y = min_y
if x < 0:
print(-1)
exit()
if x + y > n:
print(-1)
exit()
print(x, y, n - x - y)