#include<iostream>
using namespace std;
using ll = long long;
constexpr int MAXN = 1e6+2;
int A[MAXN], B[MAXN], C[MAXN];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
string a{}, b{}, c{};
cin >> a >> b >> c;
for(int i = 0; i < a.size(); ++i) {
A[a.size()-1-i] = (a[i]-'0');
}
for(int i = 0; i < b.size(); ++i) {
B[b.size()-1-i] = (b[i]-'0');
}
for(int i = 0; i < a.size(); ++i) {
C[a.size()-1-i] = (c[i]-'0');
}
ll ans{};
int ends{};
for(int i = 0; i < a.size(); ++i) {
if(A[i] + B[i] == C[i]) {
ends++;
ans += ends;
}
else if((A[i] + B[i])%10 == C[i]) {
//wykonuje sie dpokoi sie nie konczy kaskada
while((A[i+1]+B[i+1]+1)%10 == C[i+1] && A[i+1] + B[i+1] + 1 != C[i+1]) {
A[i+1]++;
i++;
}
if(A[i+1] + B[i+1] + 1 == C[i+1]) {
A[i+1]++;
}
else ends = 0;
}
else ends = 0;
}
cout << ans << '\n';
}
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 | #include<iostream> using namespace std; using ll = long long; constexpr int MAXN = 1e6+2; int A[MAXN], B[MAXN], C[MAXN]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string a{}, b{}, c{}; cin >> a >> b >> c; for(int i = 0; i < a.size(); ++i) { A[a.size()-1-i] = (a[i]-'0'); } for(int i = 0; i < b.size(); ++i) { B[b.size()-1-i] = (b[i]-'0'); } for(int i = 0; i < a.size(); ++i) { C[a.size()-1-i] = (c[i]-'0'); } ll ans{}; int ends{}; for(int i = 0; i < a.size(); ++i) { if(A[i] + B[i] == C[i]) { ends++; ans += ends; } else if((A[i] + B[i])%10 == C[i]) { //wykonuje sie dpokoi sie nie konczy kaskada while((A[i+1]+B[i+1]+1)%10 == C[i+1] && A[i+1] + B[i+1] + 1 != C[i+1]) { A[i+1]++; i++; } if(A[i+1] + B[i+1] + 1 == C[i+1]) { A[i+1]++; } else ends = 0; } else ends = 0; } cout << ans << '\n'; } |
English