Advertisement
Okorosso

Сложение длинная арифметика

Apr 14th, 2021
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3. #include <vector>
  4. #include <cstdio>
  5.  
  6. std::vector<int> str_to_num(std::string S) { // Т.к храним числа как набор из интов в векторе, то ситываем числа как строки и потом их переводим в наш способ хранения
  7.     using namespace std;
  8.  
  9.     vector<int> numbers(2000);
  10.     int i, t = 1999, counter = 0;
  11.     string temp;
  12.  
  13.     for (i = S.length() - 1; i >= 0; i--) {
  14.         temp.insert(0, 1, S[i]);
  15.         counter++;
  16.         if (counter == 5 || i == 0) { // храню по 5 цифр, поэтому чекаю ==5
  17.             numbers[t] = stoi(temp);
  18.             counter = 0;
  19.             temp = "";
  20.             t--;
  21.         }
  22.     }
  23.     return numbers;
  24. }
  25.  
  26. int main() {
  27.  
  28.     using namespace std;
  29.     ifstream cin("input.txt");
  30.     FILE *fout = fopen("output.txt", "w"); // делаем вывод в Си стиле, чтобы выводить числа типа 0004 с незначащими нулями впереди
  31.  
  32.     int i, sum, flag = 0, remain = 0;
  33.     vector<int> a, b, result(2000);
  34.     string firstStr, secondStr, temp;
  35.  
  36.     cin >> firstStr >> secondStr;
  37.  
  38.     a = str_to_num(firstStr);
  39.     b = str_to_num(secondStr);
  40.  
  41.     for (i = 1999; i >= 0; i--) {
  42.         sum = a[i] + b[i] + remain;
  43.         remain = sum / 100000;
  44.         result[i] = sum % 100000;
  45.     }
  46.  
  47.     for (i = 0; i < 2000; i++)
  48.         if ((result[i] != 0) || (result[i] == 0 && flag == 1)) {
  49.             if (flag == 0) {
  50.                 flag = 1;
  51.                 fprintf(fout, "%d", result[i]);
  52.             }
  53.             else
  54.                 fprintf(fout, "%05d", result[i]);
  55.         }
  56.  
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement