DuongNhi99

Sum BigNum

Mar 10th, 2022
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.07 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int StringtoNum(char c) {
  5.     return c - '0';
  6. }
  7.  
  8. char NumtoString(int n) {
  9.     return (char)(n + 48);
  10. }
  11.  
  12. // lam 2 xau co do dai bang nhau
  13. void ChuanHoa(string &a, string &b) {
  14.     int l1 = a.length(), l2 = b.length();
  15.     if(l1 >= l2)
  16.         // chen vao dau cua b cac ky tu '0'
  17.        b.insert(0, l1 - l2, '0');    
  18.     else
  19.         // chen vao dau cua a cac ky tu '0'
  20.        a.insert(0, l2-l1, '0');  
  21. }
  22.  
  23. string SUM(string a, string b) {
  24.     string s = "";
  25.     ChuanHoa(a,b);
  26.      
  27.     int tmp = 0;
  28.     for(int i = a.length()-1; i >= 0; i--)
  29.     {
  30.         // tinh tong tung doi mot
  31.         tmp = StringtoNum(a[i]) + StringtoNum(b[i]) + tmp;  
  32.        
  33.         // gan phan don vi vao
  34.        s.insert(0,1, NumtoString(tmp%10));        
  35.        
  36.         // lay lai phan hang chuc
  37.         tmp = tmp / 10;    
  38.     }
  39.    
  40.     // neu hang chuc > 0 thi them vao KQ
  41.     if(tmp > 0)
  42.         s.insert(0, 1, NumtoString(tmp));
  43.    
  44.     return s;
  45. }
  46.  
  47. // nhan so co 1 chu so voi so co nhieu chu so, lam tuong tu nhu phep cong
  48. string TichNho(char a, string b) {
  49.     string s = "";
  50.     int tmp = 0;
  51.    
  52.     for(int i = b.length()-1; i >= 0; i--)    
  53.     {
  54.        tmp = StringtoNum(a) * StringtoNum(b[i]) + tmp;
  55.        
  56.        s.insert(0,1, NumtoString(tmp%10));
  57.        
  58.        tmp = tmp / 10;
  59.     }
  60.      
  61.     if(tmp > 0)
  62.         s.insert(0, 1, NumtoString(tmp));
  63.    
  64.     return s;
  65. }
  66.  
  67. string TICH(string a, string b) {
  68.     string s = "";
  69.     int le = a.length();
  70.     string s1[le];
  71.      
  72.      // nhan tung chu so cua a voi b sau do cong don vao
  73.     for(int i = le-1; i >= 0; i--) {
  74.         // nhan tung so cua a voi b
  75.        s1[i] = TichNho(a[i], b);
  76.          
  77.        s1[i].insert(s1[i].length(), le-i-1, '0');  
  78.        
  79.         // cong don theo cach cong so lon
  80.        s = SUM(s, s1[i]);
  81.     }
  82.    
  83.     return s;
  84. }
  85.  
  86. string a, b;
  87.  
  88.  
  89. int main() {
  90.    int t; cin >> t;
  91.    getline(cin, a);
  92.    while(t--) {
  93.         getline(cin, a);
  94.         getline(cin, b);
  95.      
  96.         cout << "Tong: " << SUM(a, b) << '\n';
  97.      
  98.         cout << "Tich: " << TICH(a, b) << '\n';
  99.    }
  100.      
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment