Advertisement
Marisichka

Untitled

Oct 8th, 2021
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. #define SIZE 250
  5.  
  6. using namespace std;
  7.  
  8. class LongNumber {
  9.  
  10. public:
  11.     int len[SIZE];
  12.     LongNumber operator *(LongNumber& x) {
  13.  
  14.         LongNumber ret;
  15.         int carry = 0;
  16.         int mat[2 * SIZE + 1][2 * SIZE] = { 0 };
  17.  
  18.         for (int i = SIZE - 1; i >= 0; i--) {
  19.  
  20.             for (int j = SIZE - 1; j >= 0; j--) {
  21.                 carry += len[i] * x.len[j];
  22.  
  23.                 if (carry < 10) {
  24.                     mat[i][j - (SIZE - 1 - i)] = carry;
  25.                     carry = 0;
  26.                 }
  27.                 else {
  28.                     mat[i][j - (SIZE - 1 - i)] = carry % 10;
  29.                     carry = carry / 10;
  30.                 }
  31.             }
  32.         }
  33.         for (int i = 1; i < SIZE + 1; i++) {
  34.             for (int j = SIZE - 1; j >= 0; j--) {
  35.                 carry += mat[i][j] + mat[i - 1][j];
  36.  
  37.                 if (carry < 10) {
  38.  
  39.                     mat[i][j] = carry;
  40.  
  41.                     carry = 0;
  42.  
  43.                 }
  44.  
  45.                 else {
  46.  
  47.                     mat[i][j] = carry % 10;
  48.  
  49.                     carry = carry / 10;
  50.  
  51.                 }
  52.             }
  53.         }
  54.         for (int i = 0; i < SIZE; i++)
  55.             ret.len[i] = mat[SIZE][i];
  56.         return ret;
  57.     }
  58.  
  59.     LongNumber() {
  60.  
  61.         for (int i = 0; i < SIZE; i++)
  62.             len[i] = 0;
  63.  
  64.     }
  65.  
  66.     LongNumber(string _no) {
  67.  
  68.         for (int i = 0; i < SIZE; i++) {
  69.             len[i] = 0;
  70.         }
  71.  
  72.         int index = SIZE - 1;
  73.  
  74.         for (int i = _no.length() - 1; i >= 0; i--, index--) {
  75.             len[index] = _no[i] - '0';
  76.         }
  77.     }
  78.  
  79.     void print() {
  80.  
  81.         int start = 0;
  82.         for (int i = 0; i < SIZE; i++)
  83.             if (len[i] != 0) {
  84.                 start = i;
  85.                 break;
  86.             }
  87.  
  88.         for (int i = start; i < SIZE; i++)
  89.  
  90.             cout << len[i];
  91.         cout << endl;
  92.         return;
  93.  
  94.     }
  95. };
  96.  
  97. int main() {
  98.  
  99.     string str1, str2;
  100.     cin >> str1 >> str2;
  101.  
  102.     LongNumber n1(str1);
  103.     LongNumber n2(str2);
  104.  
  105.     LongNumber n3 = n1 * n2;
  106.  
  107.  
  108.     int k = 0;
  109.     for (int i = 0; i < SIZE; i++)
  110.     {
  111.         if (n3.len[i] == 0)
  112.         {
  113.             k++;
  114.         }
  115.         else
  116.             break;
  117.     }
  118.  
  119.     if (k == SIZE){
  120.         cout << "0" << endl;
  121.     }
  122.    
  123.    else {
  124.  
  125.         for (int i = k; i < SIZE; i++){
  126.             cout << n3.len[i];
  127.         }
  128.     }
  129.  
  130.     return 0;
  131.  
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement