О представительствах Цекендорфа / Базисные числа Фибоначчи
Это система счисления, которая использует числа Фибоначчи в качестве своей базы. Числа состоят из 0 и 1, и каждый 1 означает, что число содержит соответствующее число Фибоначчи, а 0 означает, что это не так.
Например, давайте преобразуем все натуральные числа <= 10 в основную Фибоначчи.
1 станет 1, потому что это сумма 1, которая является числом Фибоначчи,
2 станет 10, потому что это сумма 2, которая является числом Фибоначчи, и ей не нужно 1, потому что мы уже достигли желаемой суммы.
3 станет 100, потому что это сумма 3, которая является числом Фибоначчи, и ей не нужно 2 или 1, потому что мы уже достигли желаемой суммы.
- 4 станет 101, потому что это сумма [3,1], оба из которых являются числами Фибоначчи.
- 5 станет 1000, потому что это сумма 5, которая является числом Фибоначчи, и нам не нужны никакие другие числа.
- 6 станет 1001, потому что это сумма чисел Фибоначчи 5 и 1.
- 7 станет 1010, потому что это сумма чисел Фибоначчи 5 и 2.
- 8 станет 10000, потому что это число Фибоначчи.
- 9 станет 10001, потому что это сумма чисел Фибоначчи 8 и 1.
- 10 станет 10010, потому что это сумма чисел Фибоначчи 8 и 2.
Давайте преобразуем случайное число Базового числа Фибоначчи, 10101001010, в десятичное: сначала запишем соответствующие числа Фибоначчи. Затем мы вычисляем сумму чисел до 1.
1 0 1 0 1 0 0 1 0 1 0
144 89 55 34 21 13 8 5 3 2 1 -> 144+55+21+5+2 = 227.
Узнайте больше о базовых числах Фибоначчи: ссылка , он также имеет инструмент, который преобразует обычные целые числа в базовые числа Фибоначчи. Вы можете поэкспериментировать с этим.
Теперь вопрос:
Ваша задача - взять число в представлении Zeckendorf и вывести его десятичное значение.
Ввод - это строка, которая содержит только 0 и 1 (хотя вы можете принимать входные данные любым удобным для вас способом).
Выведите одно число в десятичном виде.
Тестовые случаи: (в формате input-> output)
1001 -> 6
100101000 -> 73
1000000000 -> 89
1001000000100100010 -> 8432
1010000010001000100001010000 -> 723452
Это код-гольф, поэтому выигрывает самый короткий ответ в байтах.
Примечание. Входные данные не будут содержать начальных 0 или последовательных 1.