Автор задачі: | Mohammad Nasser (MOAGEZA) |
Підготував: | Mohammad Nasser (MOAGEZA) |
Відредагував: | Hasan Saleh (MathModel) |
Розв'язок
Загальна ідея: Нам потрібно дописувати цифру до доти, поки x > y.
Щоразу, коли ми дописуємо до числа з цифрами, нове число стає:
Ми просто симулюємо цей процес: продовжуємо дописувати і рахуємо операції, поки x > y.
Оскільки кожна операція множить на і додає , число зростає експоненційно. Після операцій:
Однак для заданих обмежень симуляція є достатньою, оскільки відповідь завжди мала (щонайбільше \log_{10}(y) операцій).
Розв'язок працює за час на один тест, де d = \lfloor \log_{10} y \rfloor + 1 — кількість цифр у .
#include <bits/stdc++.h>
using namespace std;
void solve() {
long long x, y;
cin >> x >> y;
int cnt = 0;
while (x <= y) {
x = x * 10 + 5;
cnt++;
}
cout << cnt;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
cout << '\n';
}
return 0;
}