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

Задача на e-olimp.

Условие

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

Напишите программу, которая считывает натуральное число и выводит количество изменений данного числа до получения 1.

Число N (1  ≤ N  ≤  109).

Решение

Пусть N – это число, которое мы будем изменять, а counter – количество превращений. Цикл должен выполняться до того момента, пока N \neq 1. Чтобы проверить число на чётность/нечётность, делим его по модулю и сравниваем остаток с нулём. Если число – чётное, то делим его на 2, в противном случае – добавляем единицу, и при выполнении каждого действия, увеличиваем количество превращений на 1.

Код на Ideone.

 Тест

Входные данные Выходные данные
-5 Wrong number
1 0
6 4

Ссылка на решение на e-olimp.

2 thoughts on “e-olymp 388. Превращение

  1. — Один пробел для отступа маловато — всё сливается- используйте табуляцию.
    — Поставьте пробелы для улучшения читаемости кода. Рассмотрите, пожалуйста эти картинки. Хотя там и пишут про JavaScript, на базовом уровне это и нам полезно.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *