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

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

Добрый день!

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

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

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

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

»
12 лет назад, # |
  Проголосовать: нравится +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, что и требовалось.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Круто спасибо.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +14 Проголосовать: не нравится

    Единственно, предпоследнего шага может не быть. Например, a = 1, b = 0. Вырожденный случай, но все же.