Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #define SIZE 250
- using namespace std;
- class LongNumber {
- public:
- int len[SIZE];
- LongNumber operator *(LongNumber& x) {
- LongNumber ret;
- int carry = 0;
- int mat[2 * SIZE + 1][2 * SIZE] = { 0 };
- for (int i = SIZE - 1; i >= 0; i--) {
- for (int j = SIZE - 1; j >= 0; j--) {
- carry += len[i] * x.len[j];
- if (carry < 10) {
- mat[i][j - (SIZE - 1 - i)] = carry;
- carry = 0;
- }
- else {
- mat[i][j - (SIZE - 1 - i)] = carry % 10;
- carry = carry / 10;
- }
- }
- }
- for (int i = 1; i < SIZE + 1; i++) {
- for (int j = SIZE - 1; j >= 0; j--) {
- carry += mat[i][j] + mat[i - 1][j];
- if (carry < 10) {
- mat[i][j] = carry;
- carry = 0;
- }
- else {
- mat[i][j] = carry % 10;
- carry = carry / 10;
- }
- }
- }
- for (int i = 0; i < SIZE; i++)
- ret.len[i] = mat[SIZE][i];
- return ret;
- }
- LongNumber() {
- for (int i = 0; i < SIZE; i++)
- len[i] = 0;
- }
- LongNumber(string _no) {
- for (int i = 0; i < SIZE; i++) {
- len[i] = 0;
- }
- int index = SIZE - 1;
- for (int i = _no.length() - 1; i >= 0; i--, index--) {
- len[index] = _no[i] - '0';
- }
- }
- void print() {
- int start = 0;
- for (int i = 0; i < SIZE; i++)
- if (len[i] != 0) {
- start = i;
- break;
- }
- for (int i = start; i < SIZE; i++)
- cout << len[i];
- cout << endl;
- return;
- }
- };
- int main() {
- string str1, str2;
- cin >> str1 >> str2;
- LongNumber n1(str1);
- LongNumber n2(str2);
- LongNumber n3 = n1 * n2;
- int k = 0;
- for (int i = 0; i < SIZE; i++)
- {
- if (n3.len[i] == 0)
- {
- k++;
- }
- else
- break;
- }
- if (k == SIZE){
- cout << "0" << endl;
- }
- else {
- for (int i = k; i < SIZE; i++){
- cout << n3.len[i];
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement