#include<bits/stdc++.h>
using namespace std;
long long sum(long long n){
return ((n+1)*n)/2;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string A, B, C;
cin >> A >> B >> C;
long long output = 0, counter=0, last = 0, n=A.size();
int a, b, c, i;
vector<int> IN(n, -1);
vector<int> OUT(n, -1);
for(i=0; i<n; ++i){
a = A[i]-'0';
b = B[i]-'0';
c = C[i]-'0';
if(a+b==c){
IN[i] = 0;
OUT[i] = 0;
}
else if(a+b==10+c){
IN[i] = 0;
OUT[i] = 1;
}
else if(a+b+1==c){
IN[i] = 1;
OUT[i] = 0;
}
else if(a+b+1==10+c){
IN[i] = 1;
OUT[i] = 1;
}
}
for(i=n-1; i>=0; i--){
if(IN[i]==-1){
counter = 0;
continue;
}
if(i<n-1 && IN[i]!=OUT[i+1]) counter = 0;
if(IN[i]==0) counter++;
if(OUT[i]==0) output+=counter;
}
cout << output;
}
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 | #include<bits/stdc++.h> using namespace std; long long sum(long long n){ return ((n+1)*n)/2; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); string A, B, C; cin >> A >> B >> C; long long output = 0, counter=0, last = 0, n=A.size(); int a, b, c, i; vector<int> IN(n, -1); vector<int> OUT(n, -1); for(i=0; i<n; ++i){ a = A[i]-'0'; b = B[i]-'0'; c = C[i]-'0'; if(a+b==c){ IN[i] = 0; OUT[i] = 0; } else if(a+b==10+c){ IN[i] = 0; OUT[i] = 1; } else if(a+b+1==c){ IN[i] = 1; OUT[i] = 0; } else if(a+b+1==10+c){ IN[i] = 1; OUT[i] = 1; } } for(i=n-1; i>=0; i--){ if(IN[i]==-1){ counter = 0; continue; } if(i<n-1 && IN[i]!=OUT[i+1]) counter = 0; if(IN[i]==0) counter++; if(OUT[i]==0) output+=counter; } cout << output; } |
English