По приезде Василий с Петром обнаружили в своем номере в гостинице странный прибор. Он был оснащен дисплеем, на котором показывалось число 0, и двумя кнопками. Василий сразу понял, что первая кнопка увеличивает число на дисплее на 1, а вторая умножает его на K. В этот момент Петр обнаружил на своей кровати листок бумаги, на котором было написано единственное число N.
Теперь друзья хотят воспроизвести число N на дисплее найденного ими устройства, и, поскольку их ждет еще множество дел, им интересно минимальное число нажатий на кнопки устройства для получения числа N.
Входные данные
В первой строке входных данных записано целое неотрицательное число N (1 ≤ N ≤ 109).
Во второй строке входных данных записано целое положительное число K (2 ≤ K ≤ 109).
Выходные данные
Выведите единственное число — минимальное количество нажатий на кнопки устройства для получения на его дисплее числа N.
Система оценки
Решения, работающие при K = 2, будут набирать не менее 20 баллов.
Решения, работающие при N ≤ 20, будут набирать не менее 15 баллов.
Решения, работающие при N ≤ 105, будут набирать не менее 35 баллов.
Пример
Ввод
Вывод
Пояснение
4
2
3
Василий и Петр хотят воспроизвести число 4. Кнопка умножает на 2 число, которое показывается на дисплее. Первой операцией друзья увеличивают текущее число на 1, нажимая первую кнопку, после чего оно становится равно 1. Затем они умножают его на 2, нажимая вторую кнопку. Текущее число становится равно 2. После чего, для получения на дисплее числа 4 достаточно один раз нажать вторую кнопку и умножить текущее число (то есть 2) на 2. Несложно показать, что меньше, чем за три операции, получить число 4 невозможно. Таким образом, минимальное число действий равняется трем.
Олимпиада, 8 класс, фаст плез
Нужно решить в коде, на любом языке
Ответ:
#include <iostream>
#include <cmath>
int main()
{
int k, x, y;
x == k
y == k + 1
std::cin >> k >> x >> y;
std::cout << abs(x / k — y / k);
}
Объяснение:
язык С++