#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> int main(){ int t; int zero; char a[110],b[110]; char c[110]; char temp[110]; int numa,numb; int count=0; int start; scanf("%d",&t); int flag; while(t--){ count++; flag=0; zero=0; scanf(" %s %s",&a,&b); int lena=strlen(a); int lenb=strlen(b); int max=lena>=lenb?lena:lenb; int min=lena>=lenb?lenb:lena; for(int i=0;i<max;i++){ c[i]='0'; } if(lena==lenb){ for(int i=0;i<lena;i++){ numa=a[i]-'0'; numb=b[i]-'0'; if(numb>numa){ flag=1; strcpy(temp,a); strcpy(a,b); strcpy(b,temp); break; } } }else if(lena<lenb){ flag=1; int len=lena; lena=lenb; lenb=lena; strcpy(temp,a); strcpy(a,b); strcpy(b,temp); } int lenc=max; int cha=max-min; c[lenc]='\0'; lenc--; for(int i=min-1;i>=0;i--){ numa=a[i+cha]-'0'; numb=b[i]-'0'; if(numa>=numb){ c[lenc]=numa-numb+'0'; }else{ int t=i+cha; while(!(a[t-1]>='1'&&a[t-1]<='9')){ a[t-1]='9'; t--; } a[t-1]-=1; c[lenc]=numa+10-numb+'0'; } lenc--; } for(int i=cha-1;i>=0;i--){ c[lenc]=a[i]; lenc--; } printf("Case #%d:\n",count); if(flag==1) printf("-"); //printf("max%d\n",max); for(int i=0;i<max;i++){ if(c[i]>='1'&&c[i]<='9'){ start=i; zero=1; break; } } if(zero==1) for(int i=start;i<lena;i++){ printf("%c",c[i]); }else{ printf("0"); } printf("\n"); } } |
Double click to view unformatted code.