#include #include int fib[40]; void printNum(char* num,int lng) { while(lng--) { printf("%c",num[lng]); } printf("\n"); } int switchChars(char* pole) { int pos=0; char tmp; int i; while(pole[pos]!=0) pos++; for(i=0;i0) { if((fib[pos]<=cislo)&&(last==0)) { cislo-=fib[pos]; if(first){ first=0; vysledek[pos+1]=0; lng=pos+1; } vysledek[pos]='1'; last=1; } else { vysledek[pos]='0'; last=0; } pos--; } for(i=pos;i>=0;i--) { vysledek[i]='0'; } return lng; } int toCanon(char* vysledek) { int lng=0; int i; int first=1; int pos=39; int cislo=getStrValue(vysledek); int last=0; vysledek[0]=0; while(cislo>0) { if((fib[pos]<=cislo)&&(last==0)) { cislo-=fib[pos]; if(first){ first=0; vysledek[pos+1]=0; lng=pos+1; } vysledek[pos]='1'; last=1; } else { vysledek[pos]='0'; last=0; } pos--; } for(i=pos;i>=0;i--) { vysledek[i]='0'; } return lng; } int main(void){ char c1,c2; char s1[81]; char s2[81]; char vysledek[81]; int tag; int tmp; div_t cislo; int s1L,s2L; int i=0,j=0,b=0,cislice=0,tag2=0; fib[0]=1; fib[1]=2; for(i=2;i<40;i++) { fib[i]=fib[i-1]+fib[i-2]; } while(1) { i=0; s1[0]=0; scanf("%s ",s1); if(s1[0]==0) break; scanf("%s\n",s2); s1L=switchChars(s1); s2L=switchChars(s2); /* printNum(s1,s1L); // printNum(s2,s2L);*/ i=toCanon(s1); j=toCanon(s2); /* printNum(s1,i); // printNum(s2,j);*/ /*printf("%s %s",s1,s2);*/ s1L=i; s2L=j; cislo.quot=0; cislo.rem=0; b=toCanonInt(getStrValue(s1)+getStrValue(s2),vysledek); /* while(1){ i--;j--; if(i>=0) c1=s1[i]; else c1='0'; if(j>=0) c2=s2[j]; else c2='0'; cislo=div(c1-'0'+c2-'0'+cislice,2); cislice=cislo.rem; vysledek[b]=cislice+'0'; cislice=cislo.quot; b++; if(i<=0&&j<=0) break; } if (cislice!=0){ vysledek[b]='1'; b++; } vysledek[b+1]='\0';*/ /* b=toCanon(vysledek);*/ /* printf("%d %d %d",b,s1L,s2L); printf("\n"); printNum(s1,s1L); printNum(s2,s2L); printNum(vysledek,b);*/ tmp=b-s1L; printf(" "); while(tmp--) printf(" "); printNum(s1,s1L); printf("+ "); tmp=b-s2L; while(tmp--) printf(" "); printNum(s2,s2L); printf(" "); tmp=b; while(tmp--) printf("-"); printf("\n "); printNum(vysledek,b); printf("\n"); } return 0; }