#include <bits/stdc++.h>
using namespace std;
int main() {
string x, y, z;
cin >> x >> y >> z;
int n = (int)x.size();
long long count = 0;
long long acc = 0;
long long przesunieto = 0;
bool mogeRozpoczac = false;
for (int i = n-1; i >= 0; i--) {
long long xi = x[i] - '0';
long long yi = y[i] - '0';
long long zi = z[i] - '0';
long long sum = (xi + yi + przesunieto) % 10;
mogeRozpoczac = xi + yi + przesunieto < 10 && sum == zi;
if (mogeRozpoczac) {
acc++;
count += acc;
}
if (sum != zi){
acc = 0;
if(xi + yi == zi) {
acc++;
count += acc;
}
if((xi + yi) % 10 == zi && xi + yi >= 10){
przesunieto = 1;
}
else{
przesunieto = 0;
}
}
else{
przesunieto = xi + yi + przesunieto >= 10 ? 1 : 0;
}
}
cout << count << 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 44 45 46 | #include <bits/stdc++.h> using namespace std; int main() { string x, y, z; cin >> x >> y >> z; int n = (int)x.size(); long long count = 0; long long acc = 0; long long przesunieto = 0; bool mogeRozpoczac = false; for (int i = n-1; i >= 0; i--) { long long xi = x[i] - '0'; long long yi = y[i] - '0'; long long zi = z[i] - '0'; long long sum = (xi + yi + przesunieto) % 10; mogeRozpoczac = xi + yi + przesunieto < 10 && sum == zi; if (mogeRozpoczac) { acc++; count += acc; } if (sum != zi){ acc = 0; if(xi + yi == zi) { acc++; count += acc; } if((xi + yi) % 10 == zi && xi + yi >= 10){ przesunieto = 1; } else{ przesunieto = 0; } } else{ przesunieto = xi + yi + przesunieto >= 10 ? 1 : 0; } } cout << count << endl; return 0; } |
English