e-olymp 388. Превращение

Условие

Возьмем какое-нибудь натуральное число [latex]n[/latex]. Будем изменять его следующим образом: если число четное, то разделим его на [latex]2[/latex], если нечетное, прибавим [latex]1[/latex]. После нескольких таких изменений мы всегда получаем число [latex]1[/latex]. Например, из числа [latex]11[/latex] получается число [latex]12[/latex], затем [latex]6[/latex], [latex]3[/latex], [latex]4[/latex], [latex]2[/latex] и, наконец, [latex]1[/latex]. Таким образом, для получения [latex]1[/latex] из [latex]11[/latex] нужно проделать [latex]6[/latex] изменений.
Напишите программу, которая считывает натуральное число и выводит количество изменений данного числа до получения [latex]1[/latex].

Код

Решение

  • Цикл начинается со значением счетчика 0, так как возможны случаи, когда операций над [latex]n[/latex] вообще не нужно будет производить (конкретно — при [latex]n=1[/latex]).
  • Поскольку нам гарантируют, что входное число [latex]n[/latex] — натуральное, то цикл будет работать до тех пор, пока [latex]n>1[/latex]
  • После каждой итерации значение счетчика будет увеличено на [latex]1[/latex].
  • В теле цикла мы проверяем чётность числа [latex]n[/latex] путём проверки остатка от деления [latex]n[/latex] на [latex]2[/latex]. Если остаток равен 0, то число чётное, в противном случае — нечётное. По результату проверки [latex]n[/latex] может быть преобразовано двумя способами:
    • если [latex]n[/latex] — нечетное, то значение [latex]n[/latex] увеличивается на [latex]1[/latex];
    • в противном случае [latex]n[/latex] делится на [latex]2[/latex].

Реализуем описанный алгоритм, после которого отправляем на печать значение счетчика

Ссылка на решение задачи

Ссылка на условие задачи

Артём Мисесин
Артём Мисесин

Latest posts by Артём Мисесин (see all)

One thought on “e-olymp 388. Превращение

Добавить комментарий