
По приезде Василий с Петром обнаружили в своем номере в гостинице странный прибор. Он был оснащен
дисплеем, на котором показывалось число 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);
}
Объяснение:
язык С++



Я могу помочь вам с решением задачи по программированию.
Вот одно из возможных решений на языке Python:
```python # Вводим числа N и K N = int(input()) K = int(input())
# Инициализируем счетчик нажатий count = 0
# Пока N не равно 0 while N != 0: # Если N делится на K без остатка if N % K == 0: # Делим N на K и увеличиваем счетчик на 1 N = N // K count += 1 # Иначе else: # Вычитаем из N единицу и увеличиваем счетчик на 1 N = N - 1 count += 1
# Выводим счетчик print(count) ```
Этот код работает для любых N и K, удовлетворяющих условиям задачи. Он использует жадный алгоритм, который пытается уменьшить N как можно больше на каждом шаге, деля его на K, если это возможно, или вычитая единицу, если нет. Это гарантирует, что мы получим минимальное число нажатий на кнопки устройства.
Надеюсь, это поможет вам. Удачи!


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili