#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
long long n,ans = 0;
string a,b,c;
cin>>a>>b>>c;
n = a.size();
vector<int> v,w;
for(int i=0; i<n; ++i) {
v.push_back(0);
w.push_back(0);
}
if(int(a[n-1]-'0') + int(b[n-1]-'0') == int(c[n-1]-'0')) v[n-1]++;
if(int(a[n-1]-'0') + int(b[n-1]-'0') == int(c[n-1]-'0') + 10) w[n-1]++;
for(int i=n-2; i>=0; --i) {
if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0')) v[i] = v[i+1] + 1;
if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0') - 1) v[i] = w[i+1];
if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0') + 10) w[i] = v[i+1] + 1;
if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0') + 10 - 1) w[i] = w[i+1];
}
for(int i=0; i<n; ++i) ans += v[i];
cout<<ans<<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 | #include <vector> #include <algorithm> #include <iostream> using namespace std; int main() { long long n,ans = 0; string a,b,c; cin>>a>>b>>c; n = a.size(); vector<int> v,w; for(int i=0; i<n; ++i) { v.push_back(0); w.push_back(0); } if(int(a[n-1]-'0') + int(b[n-1]-'0') == int(c[n-1]-'0')) v[n-1]++; if(int(a[n-1]-'0') + int(b[n-1]-'0') == int(c[n-1]-'0') + 10) w[n-1]++; for(int i=n-2; i>=0; --i) { if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0')) v[i] = v[i+1] + 1; if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0') - 1) v[i] = w[i+1]; if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0') + 10) w[i] = v[i+1] + 1; if(int(a[i]-'0') + int(b[i]-'0') == int(c[i]-'0') + 10 - 1) w[i] = w[i+1]; } for(int i=0; i<n; ++i) ans += v[i]; cout<<ans<<endl; return 0; } |
English