Федя совсем недавно поступил в лучший вуз страны. В особенности ему стала интересна кафедра изучения счастливых чисел, то есть тех чисел, которые состоят только из цифр 2 и 5. Научные сотрудники этой кафедры исследуют их распределение. Они поняли, что существует последовательность всех счастливых чисел в порядке возрастания (2 - первое число, 5 - второе, 22 - третье и т.д.). Они хотят найти порядковый номер счастливого числа N в данной последовательности. Федю очень заинтересовала эта задача. Он думал над ней целый день, но так ни к чему и не пришел. Можете ли вы помочь Феде и кафедре счастливых чисел найти ответ?
Формат результата
Для каждого теста требуется ввести в тестирующую систему одно целое число –- порядковый номер счастливого числа N в последовательности счастливых чисел.
Примечания
Т.к. счастливое число 2 является первым числом последовательности счастливых чисел, то ответ на задачу при N = 2 равен 1. При N = 22, ответ равен 3. А например, т.к. число 255 является 10-ым членом последовательности, то при N = 255 ответ будет равен 10.
Подскажите пожалуйста ответ для каждого из 10 тестов.
Или напишите код для решения этой задачи на любом языке программирования.
В столбике указан номер теста и значение N, нужно указать в каждом тесте какое это будет число последовательности.
1 - 25
2 - 55
3 - 225
4 - 5555
5 - 5522
6 - 255255525
7 - 555222255525252252
8 - 252252552252522555552525252222
9 - 255522222225522252255255222555552225222252555222222255252222
10 - 552222552555225252222555555522522555225255525252552222525255
Answers & Comments
Ответ:
1.4
2.6
3.8
4.30
5.27
6.732
7.493393
8.1389002063
9.1657757535195332815
10.2033138283364396074
Объяснение:
python:
n = int(input())
# 1.
d = '1' + str(n).replace('2', '0').replace('5', '1')
res = int(d, 2) - 1
print(res)
# 2.
k = 1
cnt = 0
s = {2: 1, 5: 2}
while n:
cnt += s[n%10] * k
k <<= 1
n //= 10
print(cnt)