#include<bits/stdc++.h>
using namespace std;
#define N 1001000
inline void read(int &a){
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
a=ch-'0';
}
int n,m,ne;
int a[N],b[N];
char ans[N*2];
int fib[10]={1,2,3,5,8,13,21,34,55,89};
void dow(int p){
n=max(n,p+1);
while(a[p+1]>0&&a[p]>0) --a[p],--a[p+1],++a[p+2],dow(p+2);
while(a[p]>0&&a[p-1]>0) --a[p],--a[p-1],++a[p+1],dow(p+1);
if(p>1){
while(a[p]>=2){
a[p]-=2;
a[p-2]++,a[p+1]++;
dow(p+1);
}
}
}
void cle(){
for(int i=n-1;i>=2;i--){
while(a[i]>=2){
a[i]-=2;
a[i-2]++,a[i+1]++;
n=max(n,i+2);
dow(i);
}
}
for(int i=n-1;i>0;i--){
dow(i);
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++) read(a[i]);
scanf("%d",&m);
for(int i=0;i<m;i++) read(b[i]),a[i]+=b[i];
n=max(n,m);
cle();
int free=a[1]*2+a[0];
a[0]=a[1]=0;
for(int i=9;i>=0;i--){
if(free>=fib[i]){
a[i]++,free-=fib[i];
}
}
cle();
printf("%d\n",n);
int len=0;
for(int i=0;i<n;i++){
ans[len++]=a[i]+'0';
ans[len++]=' ';
}
printf("%s\n",ans);
return 0;
}
51nod 特殊表示法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.