P3424 [POI 2005] SUM-Fibonacci Sums

题目描述

斐波那契数是一个这样定义的整数:$F(0)=1$,$F(1)=1$,$F(i)=F(i-1)+F(i-2)$ $(i>=2)$,前几个数是这样的 $1, 1, 2, 3, 5, 8, \ldots$ 伟大的计算机学家 $\texttt{Byteazar}$ 正在做一个非凡的计算机,其中的数由斐波那契表示! 如一个数列 $b_1, b_2, \ldots , b_n$ 表示数字 $F(1) \times b_1+b_2 \times F(2)+ \ldots +b_n \times F(n)$(不使用 $F(0)$ )。 不幸的是,这样的表示并不明确,即相同的数字可以有不同的表示。比如 $42$ 可以表示为 $(0,0,0,0,1,0,0,1)$,$(0,0,0,0,1,1,1,0)$ 或 $(1,1,0,1,0,1,1)$,于是 $\texttt{Byteazar}$ 加了一个限制: - 如果 $n>1$,那么$b_n=1$,即数字的表示不包含前导零。 - 如果 $b_i=1$,那么 $b_{i+1}=0$,即数字的表示不包含两个(或多个)连续的数字。 这个计算机的建设比 $\texttt{Byteazar}$ 所认为的要难,现在请你来帮帮他~。 你需要写一个程序: 读取两个正整数的表示,计算并向标准输出写入其和的表示。

输入格式

输入的第一行先是一个正整数 $n$,为 $x$ 的斐波那契表示的长度,接下来的序列是 $x$ 的斐波那契表示。 第二行的第一个数字是一个正整数 $m$,为 $y$ 的斐波那契表示的长度,接下来的序列是 $y$ 的斐波那契表示。

输出格式

输出只有一行程序,应写入 $x+y$ 的和的斐波纳契表示(满足上述条件),同样是先输出一个正整数 $n$ ,表示 $x+y$ 的和的斐波纳契表示的长度,然后再输出 $x+y$ 的和的斐波那契表示。 $1\leq n,m \leq 10^6$。 感谢@codesonic 提供的翻译