Zeckendorf 표현 /베이스 피보나치 번호 정보
이것은 피보나치 수를 기본으로 사용하는 수 시스템입니다. 숫자는 0과 1로 구성되며 각 1은 숫자에 해당 피보나치 숫자가 포함되어 있음을 의미하고 0은 그렇지 않습니다.
예를 들어, 모든 자연수 <= 10을 기본 피보나치로 변환 해 봅시다.
1은 피보나치 수인 1의 합이므로 1이됩니다.
2는 피보나치 수인 2의 합이므로 10이됩니다. 이미 원하는 합을 달성 했으므로 1이 필요하지 않습니다.
3은 100이됩니다. 3의 합은 피보나치 수이며 이미 원하는 합을 얻었으므로 2 또는 1이 필요하지 않습니다.
- 4는 [3,1]의 합계이기 때문에 101이됩니다. 둘 다 피보나치 수입니다.
- 5는 피보나치 수인 5의 합이므로 1000이됩니다. 다른 숫자는 필요하지 않습니다.
- 6은 피보나치 수 5와 1의 합이므로 1001이됩니다.
- 7은 피보나치 수 5와 2의 합이므로 1010이됩니다.
- 피보나치 수이기 때문에 8은 10000이됩니다.
- 9는 피보나치 수 8과 1의 합이므로 10001이됩니다.
- 피보나치 수 8과 2의 합이므로 10은 10010이됩니다.
임의의 기본 피보나치 수 10101001010을 10 진수로 변환 해 봅시다 : 먼저 해당 피보나치 수를 씁니다. 그런 다음 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.
기본 피보나치 수에 대해 자세히 알아보십시오 : link , 정규 정수를 기본 피보나치로 변환하는 도구도 있습니다. 실험 해 볼 수 있습니다.
이제 질문 :
당신의 임무는 Zeckendorf Representation에서 숫자를 받아서 10 진수 값을 출력하는 것입니다.
입력은 0과 1 만 포함하는 문자열입니다 (원하는 방식으로 입력 할 수 있음).
하나의 숫자를 10 진수로 출력합니다.
테스트 사례 : (입력-> 출력 형식)
1001 -> 6
100101000 -> 73
1000000000 -> 89
1001000000100100010 -> 8432
1010000010001000100001010000 -> 723452
이것은 코드 골프이므로 바이트 단위의 최단 답변이 이깁니다.
참고 : 입력에는 선행 0 또는 연속 1이 포함되지 않습니다.