#include <iostream> #include <string> using namespace std; string add(string a, string b) { // Jeśli jedna z liczb jest pusta, zwróć drugą if (a.empty()) return b; if (b.empty()) return a; // Zmienne pomocnicze string result; int carry = 0; // Przeprowadź dodawanie cyfra po cyfrze, od końca liczb for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0 || carry; i--, j--) { int sum = carry; // Jeśli obie liczby są dłuższe niż aktualna pozycja, dodaj cyfrę z a i b if (i >= 0) sum += a[i] - '0'; if (j >= 0) sum += b[j] - '0'; // Oblicz cyfrę wyniku i ewentualny przeniesienie result = (char)(sum % 10 + '0') + result; carry = sum / 10; } return result; } int main() { // Pobierz a i b string a, b; cin >> a >> b; // Wypisz sumę a i b cout << add(a, b) << endl; return 0; }
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 | #include <iostream> #include <string> using namespace std; string add(string a, string b) { // Jeśli jedna z liczb jest pusta, zwróć drugą if (a.empty()) return b; if (b.empty()) return a; // Zmienne pomocnicze string result; int carry = 0; // Przeprowadź dodawanie cyfra po cyfrze, od końca liczb for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0 || carry; i--, j--) { int sum = carry; // Jeśli obie liczby są dłuższe niż aktualna pozycja, dodaj cyfrę z a i b if (i >= 0) sum += a[i] - '0'; if (j >= 0) sum += b[j] - '0'; // Oblicz cyfrę wyniku i ewentualny przeniesienie result = (char)(sum % 10 + '0') + result; carry = sum / 10; } return result; } int main() { // Pobierz a i b string a, b; cin >> a >> b; // Wypisz sumę a i b cout << add(a, b) << endl; return 0; } |