UniLecs #129. Побитовая арифметика
UniLecsЗадача: даны два числа K, N. Необходимо вычислить арифметическое выражение вида:
K * 2^N, используя только битовые операции.
Входные данные: K, N - натуральные числа, где K от 1 до 10^3, N от 1 до 20
Вывод: результат выражения K * 2^N
Пример: K = 3, N = 4
Answer: 48
Идея: воспользуемся операцией побитового сдвига влево (<<):
переменная << число бит
Побитовый сдвиг влево сдвигает влево значения битов переменной на кол-во, указанное в переменной "число бит".
Отличительной особенностью сдвига влево на N позиций является то, что по сути это эквивалентно нахождению степени N числа 2.
1 << 0 = 1
1 << 1 = 2
1 << 2 = 4
1 << 3 = 8
...
1 << 8 = 256
1 << 9 = 512
1 << 10 = 1024
Соот-но операцию вида K * 2^N можно представить в виде: (K*1) << N = K << N.
Использование операции побитового сдвига влево намного эффективнее встроенных функций ЯП для возведения в степень, например Math.Pow(K, N) в C#.
Реализация:
https://gist.github.com/unilecs/28011b6269381699995e690901d0ad25
Test: