배경
1-2-3- 트리 보나 치 시퀀스
다음으로 표준 반복 공식을 대체하여 피보나치 시퀀스를 만들 수있는 초 동안 상상 :
기본적으로, 대신 다음을 얻기 위해 마지막 두를 합산, 당신은 마지막 세의 합계. 이것은 1-2-3-Tribonacci 시퀀스에 대한 기초이다.
브라운의 기준
당신이 순서의 구성원의 합으로 정수 값을 나타낼 수 있다는 브라운의 기준 상태가 제공 :
모든 내용은
n
1보다 큰,
이것이 도전에 의미하는 것
다음 초기 조건에 의해 형성된 1-2-3-Tribonacci 계열의 구성원들의 합으로 임의의 양의 정수를 기술 할 수있다 :
이것은이 시퀀스의 모든 값으로 알려져 측면 사이의 비율은 2 (약 1.839에서 밖으로 비율 평균)보다 절대 크다.
이 수치 표현 시스템에서 작성하는 방법
리틀 엔디안 표현을 사용한다고 가정 해 봅시다. 다음과 같이 시퀀스 멤버를 정렬하십시오.
1 2 3 6 11 20 37 68
그런 다음 표시되는 전화 번호를 가지고 (우리의 테스트를 들어, 그것의 가정 해 봅시다 63
)와 63 합 주어진 1-2-3-Tribonacci의 값을 찾을 수 있습니다 (먼저 가장 큰 값을 사용하여!) . 숫자가 합계의 일부이면 그 아래에 1을 넣고 그렇지 않으면 0을 넣으십시오.
1 2 3 6 11 20 37 68
0 0 0 1 0 1 1 0
주어진 정수에 대해이 작업을 수행 할 수 있습니다-주어진 입력 아래에서 가장 큰 값을 먼저 사용하는지 확인하십시오!
정의 (마지막)
n
1과 언어의 최대 값 사이에 양의 정수 입력 (표준 기반으로 작성)이 주어지면 다음을 수행하는 프로그램이나 함수를 작성하십시오.
- 값을 정의 된 1-2-3- 트리 보나 치의 숫자 표현으로 변환하십시오.
- 이진 유사 표현을 사용하여 마치 이진 인 것처럼 읽습니다. 이것은 숫자가 동일하게 유지되지만 의미가 변경됨을 의미합니다.
- 이 이진수를 가져 와서 원래 숫자의 밑으로 변환하십시오.
- 출력 또는이 새 번호를 반환합니다.
그러나 출력이 유효하면 다음 단계를 수행하지 않아도됩니다. 더 짧고 (수학적으로 동등한) 수식을 마술처럼 찾으면 자유롭게 사용하십시오.
예
함수가 보자 f
정의에 의해 기술 된 기능, 그리고하자 []
(이 문제는 안하지만, 리틀 엔디안으로) 수행 단계를 나타냅니다 (이 과정을 수행 할 필요가 없습니다, 이것은 단지 과정이 설명되어 있습니다) :
>>> f(1)
[1]
[1]
[1]
1
>>> f(5)
[5]
[0, 1, 1]
[6]
6
>>> f(63)
[63]
[0, 0, 0, 1, 0, 1, 1]
[104]
104