#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MX = 1e6+9;
int a[MX], b[MX], c[MX];
vector<int>vect;
signed main(){
cin.tie(0)->sync_with_stdio(0);
string A, B, C; cin >> A >> B >> C;
int n = A.size();
for(auto i = 1; i <= n; ++i) a[i] = A[i-1]-'0';
for(auto i = 1; i <= n; ++i) b[i] = B[i-1]-'0';
for(auto i = 1; i <= n; ++i) c[i] = C[i-1]-'0';
for(auto i = n; i; ){
if((a[i]+b[i])%10 != c[i]){
vect.push_back(0);
i--;
continue;
}
if(a[i]+b[i] < 10){
vect.push_back(1);
i--;
continue;
}
int j = i-1;
while(j){
if(a[j]+b[j] <= 8 || (a[j]+b[j]+1)%10 != c[j]) break;
j--;
}
if((a[j]+b[j]+1)%10 != c[j]){
vect.push_back(0);
i = j;
}
else{
vect.push_back(1);
i = j-1;
}
}
reverse(vect.begin(), vect.end());
int cur = 0, res = 0;
for(auto i : vect){
if(i) cur++;
else res += (cur*(cur+1))/2, cur = 0;
}
cout << res+(cur*(cur+1))/2;
}
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 <bits/stdc++.h> #define int long long using namespace std; const int MX = 1e6+9; int a[MX], b[MX], c[MX]; vector<int>vect; signed main(){ cin.tie(0)->sync_with_stdio(0); string A, B, C; cin >> A >> B >> C; int n = A.size(); for(auto i = 1; i <= n; ++i) a[i] = A[i-1]-'0'; for(auto i = 1; i <= n; ++i) b[i] = B[i-1]-'0'; for(auto i = 1; i <= n; ++i) c[i] = C[i-1]-'0'; for(auto i = n; i; ){ if((a[i]+b[i])%10 != c[i]){ vect.push_back(0); i--; continue; } if(a[i]+b[i] < 10){ vect.push_back(1); i--; continue; } int j = i-1; while(j){ if(a[j]+b[j] <= 8 || (a[j]+b[j]+1)%10 != c[j]) break; j--; } if((a[j]+b[j]+1)%10 != c[j]){ vect.push_back(0); i = j; } else{ vect.push_back(1); i = j-1; } } reverse(vect.begin(), vect.end()); int cur = 0, res = 0; for(auto i : vect){ if(i) cur++; else res += (cur*(cur+1))/2, cur = 0; } cout << res+(cur*(cur+1))/2; } |
English