Нам нужно найти первое число ≥ a, которое при делении на d даёт остаток c.
Когда мы делим a на d, получаем какой-то остаток:
Например: если a = 14, d = 5, то r = 4, потому что 14 = 2·5 + 4.
Но нам нужен остаток c, а не r.
нужно «подвинуть»
a на число
k, чтобы остаток стал
c:
(a + k) % d == c
Это то же самое, что:
(r + k) % d == c
Нужно найти
k.
k = (c - r) % d
Например: r = 4, c = 1, d = 5 → c - r = -3, но -3 % 5 = 2, потому что 4 + 2 = 6 → 6 % 5 = 1 — то, что нужно!
Но у нас первое число это
a:
start = a + k = a + (c - a % d) % d