#include<bits/stdc++.h> using namespace std; struct bign{ int len; int d[1001]; bign(){ len = 0; memset(d,0,sizeof(d)); } }; void print(bign); bign add(bign,bign); bign change(char a[]); bign sub(bign a,bign b); int main(){ bign c; int n; cin>>n; int flag = 0; for(int i = 1;i<=n;i++){ char str1[1001],str2[1001]; scanf("%s%s",str1,str2); bign a = change(str1); bign b = change(str2); for(int i = 0;i<a.len|| i < b.len;i++){ if(a.len > b.len) { flag = 1; break; } else if(a.len < b.len){ flag = -1; break; } else { for(int i = a.len-1;i >= 0;i--){ if(a.d[i]>b.d[i]) {flag = 1;break;} else if(a.d[i]<b.d[i]){flag = -1;break;} } } } if(flag == -1){ printf("Case #%d\n",i); cout<<'-'; print(sub(b,a)); }else{ printf("Case #%d\n",i); print(sub(a,b)); } flag = 0; cout<<endl; } return 0; } bign change(char str[]){ bign c; c.len = strlen(str); for(int i = 0;i<c.len;i++) c.d[i] = str[c.len-1-i]-'0'; return c; } void print(bign c){ for(int i = c.len - 1 ;i >= 0;i--)cout<<c.d[i]; } bign sub(bign a,bign b){ bign c; for(int i = 0;i < a.len||i < b.len;i++){ if(a.d[i] < b.d[i]){ a.d[i+1]--; a.d[i]+=10; } c.d[c.len++] = a.d[i]-b.d[i]; } while(c.len-1>=1&&c.d[c.len-1]==0) c.len--; return c; } |
Double click to view unformatted code.