Task 66. Степень двойки

Task 66. Степень двойки

UniLecs

Задача: дана строка, в ней последовательно записаны n степеней двойки, т.е. числа от 2 до 2 в степени n. Числа записаны без пробелов. 

Напишите функцию, ктр выведет значение n, где 1 <= n <= 1000.

Пример:

"248163264128"

Вывод: 7

Идея: воспользуемся свойством логарифма, из ктр получается что количество цифр в десятичной записи числа n равно [lg(n)] + 1, где [] - целая часть от десятичного логарифма. Соот-но кол-во цифр в десятичной записи числа 2 в степени n равно [n*lg(2)] + 1.

Начинаем суммировать кол-во цифр в числах 2, 2^2, 2^3, 2^4, ... Суммирование продолжаем до тех пор, пока не получим число, равное кол-ву цифр во входной строке.

Реализация:

реализация на C#

https://gist.github.com/unilecs/c610c8215cbbcacae23a6c2935b67fa6

Тест:

https://dotnetfiddle.net/rKBK7y



Report Page