Guest User

Untitled

a guest
Aug 22nd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3.  
  4. using namespace std;
  5.  
  6. void difference(char *a, char *b, char *diff) {
  7.     int len = strlen(a), i;
  8.     char temp[102];
  9.     for(i=0; i<len; i++)
  10.         temp[i] = a[i];
  11.     temp[i] = '\0';
  12.     for(int i=len-1; i>=0; i--) {
  13.         if(temp[i]>=b[i]) {
  14.             diff[i] = temp[i] - b[i] + '0';
  15.         }
  16.         else {
  17.             for(int j=i-1; j>=0; j--) {
  18.                 if(temp[j] - '0' > 0) {
  19.                     temp[j] = temp[j] - 1;
  20.                     diff[i] = 10 + a[i] - b[i] + '0';
  21.                     break;
  22.                 } else {
  23.                     temp[j] = 9 + '0';
  24.                 }
  25.             }
  26.         }
  27.     }
  28. }
  29.  
  30. void divide(char *a) {
  31.     int r=0;
  32.     char temp[strlen(a)];
  33.     for(int i=0; i<strlen(a); i++)
  34.         temp[i] = a[i];
  35.     for(int i=0; i<strlen(a); i++) {
  36.         a[i] = (int)(a[i] - '0' + 10*r)/2 + '0';
  37.         r = (int)(temp[i] - '0' + 10*r)%2;
  38.     }
  39. }
  40.  
  41. int main () {
  42.     int t=10, i;
  43.     char tot[102], k[102];
  44.     char sum[103], diffArr[102];
  45.     while(t) {
  46.         cin>>tot>>k;
  47.         int totlen = strlen(tot);
  48.         int klen = strlen(k);
  49.         for(i=0; i<totlen+1; i++)
  50.             sum[i] = '0';
  51.         sum[i] = '\0';
  52.         for(i=0; i<totlen; i++)
  53.             diffArr[i] = '0';
  54.         diffArr[i] = '\0';
  55.         if(totlen>klen) {
  56.             int diff = totlen - klen;
  57.             k[klen+diff] = '\0';
  58.             for(i=klen-1; i>=0; i--) {
  59.                 k[i+diff] = k[i];
  60.             }
  61.             for(i=0; i<diff; i++) {
  62.                 k[i] = '0';
  63.             }
  64.             // difference
  65.             difference(tot, k, diffArr);
  66.         } else {
  67.             if(tot[0]>k[0])
  68.                 difference(tot, k, diffArr);
  69.             else
  70.                 difference(k, tot, diffArr);
  71.         }
  72.  
  73.         // sum
  74.         totlen = strlen(tot);
  75.         int remainder = 0;
  76.         for(i=totlen-1; i>=0; i--) {
  77.             sum[i+1] = (tot[i] - '0' + k[i] - '0' + remainder)%10 + '0';
  78.             remainder = (tot[i] - '0' + k[i] - '0' + remainder)/10;
  79.         }
  80.         sum[i+1] = remainder + '0';
  81.  
  82.         //divide
  83.         divide(sum);
  84.         divide(diffArr);
  85.         int flag=0;
  86.         for(i=0; i<strlen(sum); i++) {
  87.             if(sum[i] != '0')
  88.                 flag = '1';
  89.             if(flag=='1')
  90.                 cout<<sum[i];
  91.         }
  92.         cout<<endl;
  93.         flag=0;
  94.         for(i=0; i<strlen(diffArr); i++) {
  95.             if(diffArr[i] != '0')
  96.                 flag = '1';
  97.             if(flag=='1')
  98.                 cout<<diffArr[i];
  99.             if(flag!='1' && i==strlen(diffArr)-1)
  100.                 cout<<diffArr[i];
  101.         }
  102.         cout<<endl;
  103.         t--;
  104.     }
  105. }
Add Comment
Please, Sign In to add comment