1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
using namespace std;
typedef long long           ll;
typedef unsigned long long ull;
typedef unsigned int      uint;

int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(NULL);

  int numer = 1;
  char przeniesienie = 0;
  string a, b;
  string::reverse_iterator it1, it2, iend1, iend2;

  getline(cin, a);
  getline(cin, b);
  if(a.size() > b.size()) {
    it1 = a.rbegin();
    iend1 = a.rend();
    it2 = b.rbegin();
    iend2 = b.rend();
  } else {
    numer = 2;
    it1 = b.rbegin();
    iend1 = b.rend();
    it2 = a.rbegin();
    iend2 = a.rend();
  }

  for( ; it2 != iend2; ++it1, ++it2) {
    *it1 += *it2 + przeniesienie - '0';
    if(*it1 > '9') {
      przeniesienie = 1;
      *it1 -= 10;
    }
    else przeniesienie = 0;
  }
  while(przeniesienie > 0 && it1 != iend1) {
    ++*it1;
    if(*it1 > '9')
      *it1 -= 10;
     else
       przeniesienie = 0;
    ++it1;
  }

  if(przeniesienie > 0)
    cout << '1';
  cout << (numer == 1 ? a: b) << endl;

  return 0;
}