Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Karatsuba.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include <iostream>
- #include <vector>
- #include <random>
- #include <limits>
- using namespace std;
- random_device rd;
- mt19937_64 eng(rd());
- uniform_int_distribution<long long> distr;
- const int base = 10;
- using veryLong = vector <long long>;
- veryLong sum(veryLong p1, veryLong p2) {
- long long length;
- if (p1.size() > p2.size())
- length = p1.size() + 1;
- else
- length = p2.size() + 1;
- for (int i = 0; i < length; i++)
- {
- p2[i] += p1[i]; // суммируем последние разряды чисел
- p2[i + 1] += (p2[i] / 10); // если есть разряд для переноса, переносим его в следующий разряд
- p2[i] %= 10; // если есть разряд для переноса он отсекается
- }
- if (p2[length - 1] == 0)
- length--;
- return p2;
- }
- veryLong dif(veryLong p1, veryLong p2){
- long long length;
- int k = 3; // если к == 3, значит числа одинаковой длинны
- length = p1.size();
- if (p1.size() > p2.size())
- {
- length = p1.size();
- k = 1; // если к == 1, значит первое число длиннее второго
- }
- else
- if (p2.size() > p1.size())
- {
- length = p2.size();
- k = 2; // если к == 2, значит второе число длиннее первого
- }
- else // если числа одинаковой длинны, то необходимо сравнить их веса
- for (int i = 0; i < length;) // поразрядное сравнение весов чисел
- {
- if (p1[i] > p2[i]) // если разряд первого числа больше
- {
- k = 1; // значит первое число длиннее второго
- break; // выход из цикла for
- }
- if (p2[i] > p1[i]) // если разряд второго числа больше
- {
- k = 2; // значит второе число длиннее первого
- break; // выход из цикла for
- }
- } // конец for
- return p2;
- }
- void split(veryLong num, veryLong& part1, veryLong& part2) {
- for (int i = 0; i < num.size()/2; i++)
- part1.push_back(num[i]);
- for (int i = num.size() / 2; i < num.size(); i++)
- part2.push_back(num[i]);
- }
- void multi(veryLong x, veryLong y) {
- veryLong a, b, c, d;
- split(x, a, b);
- split(y, c, d);
- }
- int main()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement