#include int main() { using namespace std; string A, B; cin >> A >> B; string T; unsigned long carry{}; const auto get_back_or{[](auto&& S){ if(!empty(S)){ const auto ret{S.back() - 48UL}; S.pop_back(); return ret; } return 0UL; }}; while(!empty(A) || !empty(B)){ unsigned long a{get_back_or(A)}; unsigned long b{get_back_or(B)}; unsigned long r{a + b + carry}; T.push_back('0' + r % 10); carry = r / 10; } if(carry)T.push_back('0' + carry); reverse(begin(T), end(T)); cout << T << endl; return 0; }