#include <iostream> #include <string> using namespace std; long long int liczba1wtabeli1[1000000] = {}; long long int liczba1wtabeli2[1000000] = {}; long long int liczbadodana[1000000] = {}; string liczba1, liczba2; int dlugosc1, dlugoscliczby, dlugosc2; void doddotab(int i, bool z) { if (z) { dlugosc1--; for (dlugosc1; dlugosc1 >= 0; dlugosc1--) { liczba1wtabeli1[dlugosc1] = liczba1[dlugosc1] - 48; } dlugosc2--; for (dlugosc2; dlugosc2 >= 0; dlugosc2--) { liczba1wtabeli2[dlugosc2 + i] = liczba2[dlugosc2] - 48; } } else { dlugosc2--; for (dlugosc2; dlugosc2 >= 0; dlugosc2--) { liczba1wtabeli2[dlugosc2] = liczba2[dlugosc2] - 48; } dlugosc1--; for (dlugosc1; dlugosc1 >= 0; dlugosc1--) { liczba1wtabeli1[dlugosc1 + i] = liczba1[dlugosc1] - 48; } } } void dodawanieliczb(int r) { int y = 0; for (r; r >= 0; r--) { if (liczba1wtabeli1[r] + liczba1wtabeli2[r] < 10) { liczbadodana[1000000 - y] += liczba1wtabeli1[r] + liczba1wtabeli2[r]; } else { liczbadodana[1000000 - y] += liczba1wtabeli1[r] + liczba1wtabeli2[r] - 10; liczbadodana[999999 - y] += 1; } y++; } } int main() { cin >> liczba1 >> liczba2; dlugosc1 = liczba1.length(); dlugosc2 = liczba2.length(); if (dlugosc2 <= dlugosc1) { dlugoscliczby = dlugosc1; int roznica = dlugosc1 - dlugosc2; bool dlugosc1wieksza = true; doddotab(roznica, dlugosc1wieksza); } else { dlugoscliczby = dlugosc2; int roznica = dlugosc2 - dlugosc1; bool dlugosc1wieksza = false; doddotab(roznica, dlugosc1wieksza); } dodawanieliczb(dlugoscliczby); for (int t = 0; 1000000 >= t; t++) { if (liczbadodana[t] != 0 && liczbadodana[t] != -1) { cout << liczbadodana[t]; } } 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <iostream> #include <string> using namespace std; long long int liczba1wtabeli1[1000000] = {}; long long int liczba1wtabeli2[1000000] = {}; long long int liczbadodana[1000000] = {}; string liczba1, liczba2; int dlugosc1, dlugoscliczby, dlugosc2; void doddotab(int i, bool z) { if (z) { dlugosc1--; for (dlugosc1; dlugosc1 >= 0; dlugosc1--) { liczba1wtabeli1[dlugosc1] = liczba1[dlugosc1] - 48; } dlugosc2--; for (dlugosc2; dlugosc2 >= 0; dlugosc2--) { liczba1wtabeli2[dlugosc2 + i] = liczba2[dlugosc2] - 48; } } else { dlugosc2--; for (dlugosc2; dlugosc2 >= 0; dlugosc2--) { liczba1wtabeli2[dlugosc2] = liczba2[dlugosc2] - 48; } dlugosc1--; for (dlugosc1; dlugosc1 >= 0; dlugosc1--) { liczba1wtabeli1[dlugosc1 + i] = liczba1[dlugosc1] - 48; } } } void dodawanieliczb(int r) { int y = 0; for (r; r >= 0; r--) { if (liczba1wtabeli1[r] + liczba1wtabeli2[r] < 10) { liczbadodana[1000000 - y] += liczba1wtabeli1[r] + liczba1wtabeli2[r]; } else { liczbadodana[1000000 - y] += liczba1wtabeli1[r] + liczba1wtabeli2[r] - 10; liczbadodana[999999 - y] += 1; } y++; } } int main() { cin >> liczba1 >> liczba2; dlugosc1 = liczba1.length(); dlugosc2 = liczba2.length(); if (dlugosc2 <= dlugosc1) { dlugoscliczby = dlugosc1; int roznica = dlugosc1 - dlugosc2; bool dlugosc1wieksza = true; doddotab(roznica, dlugosc1wieksza); } else { dlugoscliczby = dlugosc2; int roznica = dlugosc2 - dlugosc1; bool dlugosc1wieksza = false; doddotab(roznica, dlugosc1wieksza); } dodawanieliczb(dlugoscliczby); for (int t = 0; 1000000 >= t; t++) { if (liczbadodana[t] != 0 && liczbadodana[t] != -1) { cout << liczbadodana[t]; } } return 0; } |