Возьмем какое-нибудь натуральное число N. Будем изменять его следующим образом: если число четное, то разделим его на 2, если нечетное, прибавим 1. После нескольких таких изменений мы всегда получаем число 1. Например, из числа 11 получается число 12, затем 6, 3, 4, 2 и, наконец, 1. Таким образом, для получения 1 из 11 нужно проделать 6 изменений.
Напишите программу, которая считывает натуральное число и выводит количество изменений данного числа до получения 1.
Входные данные
Число N (1 ≤ N ≤ 109).
Выходные данные
Количество превращений.
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { __int64 a,b,i,x,y,n; scanf("%I64d",&a); if(a==1)printf("0\n");else{ for(i=1;;i++){ if(a%2==0) a=a/2; else a++; if (a==1) break; } printf("%I64d\n",i);} return 0; }
Есть решение которого нет на сайте? Пиши admin@devexe.top