Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Wyrównywanie liczb
(wyrownywanie-liczb)
Limit pamięci: 64 MB
Limit czasu: 0.75 s

Dane są dwie liczby naturalne A oraz B. Naszym celem jest w tym zadaniu jest spowodować, żeby A = B.

Możliwe jest wykonywanie następujących operacji:

  • A ← s(A),
  • B ← s(B),
  • A ← A + 1,
  • B ← B + 1.

Funkcja s(⋅) jako argument przyjmuje liczbę naturalną i zwraca jako wynik jej sumę cyfr. Przykładowo: s(123) = 6.

Ile najmniej operacji należy wykonać, żeby spowodować, że podane na wejściu liczby będą równe? Żeby nie było tak łatwo, Twój program będzie musiał rozpatrzyć wiele przypadków par (Ai,Bi) i dla każdej z nich (szybko) udzielić poprawnej odpowiedzi.

Napisz program, który: wczyta liczbę zapytań oraz dla każdego z nich liczby naturalne Ai i Bi, odpowie na wszystkie zapytania, tj. wyznaczy minimalną liczbę operacji, które należy wykonać, żeby wyrównać liczby Ai i Bi i wypisze wyniki na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna Q, określająca liczbę zestawów danych. W kolejnych Q wierszach znajduje się opis kolejnych zestawów danych, po jednym w wierszu. Opis każdego zestawu danych składa się z dwóch liczb naturalnych Ai oraz Bi, oddzielonych pojedynczym odstępem.

Wyjście

Twój program powinien wypisać dokładnie Q wierszy. W i-tym z nich powinna się znaleźć odpowiedź dla i-tego zestawu danych, czyli jedna nieujemna liczba całkowita – minimalna liczba operacji, które należy wykonać, aby spowodować, że liczby Ai oraz Bi będą sobie równe.

Ograniczenia

1 ≤ Q ≤ 100 000, 0 ≤ Ai, Bi ≤ 1018.

Przykład

Wejście Wyjście Wyjaśnienie
4
12 18
1 9
25 7
58 71
4
2
1
6

W pierwszym przypadku możemy wykonać następujący ciąg operacji: (12,18) → (12,19) → (12,10) → (12,11) → (12,12).