利用最大公倍数和最小公因数来减小枚举空间 from math import gcd n,a,b = map(int,input().split()) c = gcd(a,b) d = a*b//c l = set() for i in range(b//c): for j in range(a//c): temp = i*a+j*b if temp < d: l.add(temp) n %= d min1 = n for i in l: if n-i >= 0: min1 = min(min1,n-i) print(min1) c是最大公因数,d是最小公倍数,l是个集合,来枚举。