#include<stdio.h> #include<string.h> int main(){ int t,i,j=0; char a[101],b[101],c[101]; scanf("%d",&t); while(t--){ j++; memset(a,'\0',sizeof(a)); memset(b,'\0',sizeof(b)); memset(c,'\0',sizeof(c)); scanf("%s %s",a,b); int len1=strlen(a); int len2=strlen(b); int p1=len1-1; int p2=len2-1; int flag=0,k=0;//借位问题 if(len1>len2){ for(;p1>=0&&p2>=0;p1--,p2--){ int l1=a[p1]-'0'; int l2=b[p2]-'0'; if(flag==1){ if(l1==0){ l1=9; flag=1; } else{ l1--; flag=0; } } if(l1<l2){ flag=1; c[k++]=(l1+10-l2)+'0'; } else if(l1>=l2){ c[k++]=l1-l2+'0'; } } if(p1>=0){ while(p1>=0){ int q=a[p1]-'0'; if(flag==1) { if(q==0){ q=9; flag=1; } else{ q--; flag=0; } } c[k++]=q+'0'; p1--; } } } else if(len1<len2){ for(;p1>=0&&p2>=0;p1--,p2--){ int l1=a[p1]-'0'; int l2=b[p2]-'0'; if(flag==1){ if(l2==0){ l2=9; flag=1; } else{ l2--; flag=0; } } if(l2<l1){ flag=1; c[k++]=(l2+10-l1)+'0'; } else if(l2>=l1){ c[k++]=l2-l1+'0'; } } if(p2>=0){ while(p2>=0){ int q=b[p2]-'0'; if(flag==1) { if(q==0){ q=9; flag=1; } else{ q--; flag=0; } } c[k++]=q+'0'; p2--; } } c[k++]='-'; } else{ if(strcmp(a,b)>=0){ for(;p1>=0&&p2>=0;p1--,p2--){ int l1=a[p1]-'0'; int l2=b[p2]-'0'; if(flag==1){ if(l1==0){ l1=9; flag=1; } else{ l1--; flag=0; } } if(l1<l2){ flag=1; c[k++]=(l1+10-l2)+'0'; } else if(l1>=l2){ c[k++]=l1-l2+'0'; } } } else{ for(;p1>=0&&p2>=0;p1--,p2--){ int l1=a[p1]-'0'; int l2=b[p2]-'0'; if(flag==1){ if(l2==0){ l2=9; flag=1; } else{ l2--; flag=0; } } if(l2<l1){ flag=1; c[k++]=(l2+10-l1)+'0'; } else if(l2>=l1){ c[k++]=l2-l1+'0'; } } c[k++]='-'; } } printf("Case #%d:\n",j); int k1=k-1; if(c[k1]=='0') { while(c[k1]=='0'){ k1--; } if(k1<0) printf("0"); else{ for(i=k1;i>=0;i--) printf("%c",c[i]); } } else if(c[k1]=='-'){ int k2=k1-1; for(;k2>=0&&c[k2]=='0';k2--); c[k2+1]=c[k1]; for(i=k2+1;i>=0;i--) printf("%c",c[i]); } else{ for(i=k1;i>=0;i--) printf("%c",c[i]); } printf("\n"); } } |
Double click to view unformatted code.