Рухи і результат перевірки
| # | A | B | abs(A) | abs(B) | d | d>1 |
|---|
Поточний рухA=?, B=?з moves
Без знакуa=?, b=?abs(A), abs(B)
gcdd=?найбільший спільний дільник
Умоваd > 1?чи рахуємо рух
Лічильникcount = 0скільки уже підходить
Файл0 / 0рух / всього
Як рахується gcd(a, b)
ще не вибрано рух| Крок | Ділення з остачею |
|---|
?
чекаємо на рух
Коли d > 1, рух додається до відповіді.
поточний рух
рух зараховано
рух не підходить
gcd через остачі
Що тут важливо
Знак руху не важливий для дільника, тому скрипт робить
abs(A) і abs(B).gcd(a, b) питає: яке найбільше число ділить обидві координати руху без остачі.
d > 1 означає, що рух має нетривіальний спільний крок, тому
count збільшується.d = 1 означає, що спільного дільника більше за 1 немає, тому рух пропускаємо.