아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

피보나치 합

시간 제한1초메모리 제한128 MB

요약
두 양의 정수의 제켄도르프 표현이 주어질 때, 그 합의 제켄도르프 표현을 계산한다.
난이도

어려움10점 중 8점

유형
그리디, 수학, 정수론, 구현
정답자
아직 제출이 없습니다

문제

피보나치 수는 다음과 같이 정의되는 정수 수열이다: F0=1F_0 = 1, F1=1F_1 = 1, 그리고 i≥2i \ge 2에 대해 Fi=Fi−2+Fi−1F_i = F_{i-2} + F_{i-1}이다. 이 수열의 처음 몇 항은 1,1,2,3,5,8,…1, 1, 2, 3, 5, 8, \dots 이다.

컴퓨터 과학자 Byteazar는 수를 피보나치 진법으로 표현하는 특이한 컴퓨터를 만들고 있다. 즉, 비트열 (b1,b2,…,bn)(b_1, b_2, \dots, b_n)은 수 b1F1+b2F2+⋯+bnFnb_1 F_1 + b_2 F_2 + \dots + b_n F_n을 나타낸다. (여기서 F0F_0은 사용하지 않는다는 점에 유의하라.) 안타깝게도 이 표현은 유일하지 않다. 즉, 같은 수가 여러 표현을 가질 수 있다. 예를 들어 수 4242는 (0,0,0,0,1,0,0,1)(0,0,0,0,1,0,0,1), (0,0,0,0,1,1,1,0)(0,0,0,0,1,1,1,0), (1,1,0,1,0,1,1)(1,1,0,1,0,1,1) 로 쓸 수 있다. 이런 이유로 Byteazar는 다음 두 조건을 만족하는 표현만 사용하기로 했다.

  • n>1n > 1이면 bn=1b_n = 1이다. 즉, 표현에 앞자리 00이 없다.
  • bi=1b_i = 1이면 bi+1=0b_{i+1} = 0이다 (i=1,…,n−1i = 1, \dots, n-1). 즉, 표현에 연속한 두 개(이상)의 11이 없다.

Byteazar는 덧셈을 구현하는 데 어려움을 겪고 있다. 그를 도와라!

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 두 양의 정수의 표현을 읽는다.
  • 그 합의 표현을 계산하여 표준 출력에 쓴다.

입력

입력에는 위 조건을 만족하는 두 양의 정수 xx와 yy의 피보나치 표현이 담겨 있으며, 하나는 첫째 줄에, 다른 하나는 둘째 줄에 주어진다. 각 표현은 공백 하나로 구분된 음이 아닌 정수들의 수열이다. 줄의 첫 번째 수는 표현의 길이 nn을 나타내며 1≤n≤1 000 0001 \le n \le 1\,000\,000이다. 그 뒤에 nn개의 00 또는 11이 이어진다.

출력

출력의 유일한 한 줄에, 합 x+yx + y의 (위 조건을 만족하는) 피보나치 표현을 쓴다. 표현은 입력 절에서 설명한 것처럼 공백 하나로 구분된 음이 아닌 정수들의 수열이어야 한다. 줄의 첫 번째 수는 표현의 길이 nn을 나타내며 1≤n≤1 000 0001 \le n \le 1\,000\,000이고, 그 뒤에 nn개의 00 또는 11이 이어진다.

예제3

  1. 예제 1

    입력
    4 0 1 0 1
    5 0 1 0 0 1
    
    예상 출력
    6 1 0 1 0 0 1
    
  2. 예제 2

    입력
    1 1
    1 1
    
    예상 출력
    2 0 1
    
  3. 예제 3

    입력
    1 1
    2 0 1
    
    예상 출력
    3 0 0 1