#include<stdio.h> #include<string.h> int main(){ char a[400],b[400],c[401]; int i,j; while(scanf("%s %s",a,b)!=EOF){ int k1=0,k2=0; memset(c,'\0',sizeof(c)); int flag=0,l=0; int len1=strlen(a); int len2=strlen(b); int p1,p2; p1=len1-1; p2=len2-1; for(i=0;i<len1;i++){ if(a[i]=='.'){ k1=i; break; } } for(i=0;i<len2;i++) { if(b[i]=='.'){ k2=i; break; } } if(k1==0&&k2==0){ for(;p1>=0&&p2>=0;p1--,p2--){ int k=(a[p1]-'0')+(b[p2]-'0'); if(flag==1){ k++; flag=0; } if(k>9){ flag=1; c[l++]=k-10+'0'; } else c[l++]=k+'0'; } if(p1>=0){ for(;p1>=0;p1--){ int q=a[p1]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } else if(p2>=0){ for(;p2>=0;p2--){ int q=b[p2]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } if(flag==1){ c[l++]='1'; } } else if(k1!=0&&k2!=0){ int t1=len1-k1-1; int t2=len2-k2-1; if(t1>t2){ while(t1>t2){ c[l++]=a[p1]; t1--; p1--; } } else if(t1<t2){ while(t1<t2){ c[l++]=b[p2]; t2--; p2--; } } for(;p1>=0&&p2>=0;p1--,p2--){//进位 if(a[p1]!='.'){ int k=(a[p1]-'0')+(b[p2]-'0'); if(flag==1){ k++; flag=0; } if(k>9){ flag=1; c[l++]=k-10+'0'; } else c[l++]=k+'0'; } else{ c[l++]='.'; } } if(p1>=0){ for(;p1>=0;p1--){ int q=a[p1]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } else if(p2>=0){ for(;p2>=0;p2--){ int q=b[p2]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } if(flag==1) c[l++]='1'; } else if(k1==0){ for(;p2>=0;p2--){ c[l++]=b[p2]; if(b[p2]=='.') break; } p2--; for(;p1>=0&&p2>=0;p1--,p2--){ int k=(a[p1]-'0')+(b[p2]-'0'); if(flag==1){ k++; flag=0; } if(k>9){ flag=1; c[l++]=k-10+'0'; } else c[l++]=k+'0'; } if(p1>=0){ for(;p1>=0;p1--){ int q=a[p1]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } else if(p2>=0){ for(;p2>=0;p2--){ int q=b[p2]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } if(flag==1){ c[l++]='1'; } } else if(k2==0){ for(;p1>=0;p1--){ c[l++]=a[p1]; if(a[p1]=='.') break; } p1--; for(;p1>=0&&p2>=0;p1--,p2--){ int k=(a[p1]-'0')+(b[p2]-'0'); if(flag==1){ k++; flag=0; } if(k>9){ flag=1; c[l++]=k-10+'0'; } else c[l++]=k+'0'; } if(p1>=0){ for(;p1>=0;p1--){ int q=a[p1]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } else if(p2>=0){ for(;p2>=0;p2--){ int q=b[p2]-'0'; if(flag==1){ q++; flag=0; } if(q>9){ flag=1; c[l++]=q-10+'0'; } else c[l++]=q+'0'; } } if(flag==1){ c[l++]='1'; } } for(i=l-1;i>=0;--i){ if(c[i]>='1'&&c[i]<='9') printf("%c",c[i]); else{ if(c[i]=='.'){ for(j=i-1;j>=0;--j){ if(c[j]>='1'&&c[j]<='9') break; } if(j>=0) printf("%c",'.'); } else if(c[i]=='0'){ for(j=i-1;j>=0;--j){ if((c[j]>='1'&&c[j]<='9')||(c[j]=='.')) break; } if(j>=0) printf("%c",'0'); } } } printf("\n"); } } |
Double click to view unformatted code.