Блог пользователя Edvard

Автор Edvard, 13 лет назад, По-русски

Добрый день!

Интересует оценка на величины значений x, y получающиеся алгоритмом Евклида. Много раз сдавал задачи с a, b <= 10^9 полагаясь на то, что ничего не переполнится в int и вроде так и есть (ну а если a, b <= 10^18 в long long вроде все норм). Но хочется знать это слабые тесты или есть какая-то точная оценка/худший тест.

  • Проголосовать: нравится
  • +15
  • Проголосовать: не нравится

»
13 лет назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится

Ну, если (a, b) = 1, то

»
13 лет назад, скрыть # |
 
Проголосовать: нравится +35 Проголосовать: не нравится

Если взять обозначения, как на e-maxx.ru, то |x| ≤ b, |y| ≤ a.

Докажем по индукции: a и b считаем неотрицательными. База — на предпоследнем шаге a|b, x = 1, y = 0, b ≠ 0, поэтому всё в порядке.

Переход — пусть из пары (b, bq + a)(a < b, q≥0) мы попали в пару (a, b), для которой результат — (x, y). Тогда для первой пары результат будет (y - qx, x). Оценим: |y - qx| ≤ |y| + |qx| ≤ a + qb, |x| ≤ b, что и требовалось.