Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- using namespace std;
- void difference(char *a, char *b, char *diff) {
- int len = strlen(a), i;
- char temp[102];
- for(i=0; i<len; i++)
- temp[i] = a[i];
- temp[i] = '\0';
- for(int i=len-1; i>=0; i--) {
- if(temp[i]>=b[i]) {
- diff[i] = temp[i] - b[i] + '0';
- }
- else {
- for(int j=i-1; j>=0; j--) {
- if(temp[j] - '0' > 0) {
- temp[j] = temp[j] - 1;
- diff[i] = 10 + a[i] - b[i] + '0';
- break;
- } else {
- temp[j] = 9 + '0';
- }
- }
- }
- }
- }
- void divide(char *a) {
- int r=0;
- char temp[strlen(a)];
- for(int i=0; i<strlen(a); i++)
- temp[i] = a[i];
- for(int i=0; i<strlen(a); i++) {
- a[i] = (int)(a[i] - '0' + 10*r)/2 + '0';
- r = (int)(temp[i] - '0' + 10*r)%2;
- }
- }
- int main () {
- int t=10, i;
- char tot[102], k[102];
- char sum[103], diffArr[102];
- while(t) {
- cin>>tot>>k;
- int totlen = strlen(tot);
- int klen = strlen(k);
- for(i=0; i<totlen+1; i++)
- sum[i] = '0';
- sum[i] = '\0';
- for(i=0; i<totlen; i++)
- diffArr[i] = '0';
- diffArr[i] = '\0';
- if(totlen>klen) {
- int diff = totlen - klen;
- k[klen+diff] = '\0';
- for(i=klen-1; i>=0; i--) {
- k[i+diff] = k[i];
- }
- for(i=0; i<diff; i++) {
- k[i] = '0';
- }
- // difference
- difference(tot, k, diffArr);
- } else {
- if(tot[0]>k[0])
- difference(tot, k, diffArr);
- else
- difference(k, tot, diffArr);
- }
- // sum
- totlen = strlen(tot);
- int remainder = 0;
- for(i=totlen-1; i>=0; i--) {
- sum[i+1] = (tot[i] - '0' + k[i] - '0' + remainder)%10 + '0';
- remainder = (tot[i] - '0' + k[i] - '0' + remainder)/10;
- }
- sum[i+1] = remainder + '0';
- //divide
- divide(sum);
- divide(diffArr);
- int flag=0;
- for(i=0; i<strlen(sum); i++) {
- if(sum[i] != '0')
- flag = '1';
- if(flag=='1')
- cout<<sum[i];
- }
- cout<<endl;
- flag=0;
- for(i=0; i<strlen(diffArr); i++) {
- if(diffArr[i] != '0')
- flag = '1';
- if(flag=='1')
- cout<<diffArr[i];
- if(flag!='1' && i==strlen(diffArr)-1)
- cout<<diffArr[i];
- }
- cout<<endl;
- t--;
- }
- }
Add Comment
Please, Sign In to add comment