#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
#define lb lower_bound
using namespace std;
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[i]-='0';b[i]-='0';c[i]-='0';
}
int dl=a.size();ll wynik=0;
vector<ll>dp(dl+1),dp1(dl+1);
for(int i=dl-1;i>-1;i--){
int s=a[i]+b[i];
if(s%10==c[i]){
if(s<10)
dp[i]=dp[i+1]+1;
else
dp1[i]=dp[i+1]+1;
}
s++;
if(s%10==c[i]){
if(s<10)
dp[i]=dp1[i+1];
else
dp1[i]=dp1[i+1];
}
wynik+=dp[i];
}
cout<<wynik;
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 | #include<bits/stdc++.h> #define ll long long #define pb push_back #define fi first #define se second #define lb lower_bound using namespace std; 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[i]-='0';b[i]-='0';c[i]-='0'; } int dl=a.size();ll wynik=0; vector<ll>dp(dl+1),dp1(dl+1); for(int i=dl-1;i>-1;i--){ int s=a[i]+b[i]; if(s%10==c[i]){ if(s<10) dp[i]=dp[i+1]+1; else dp1[i]=dp[i+1]+1; } s++; if(s%10==c[i]){ if(s<10) dp[i]=dp1[i+1]; else dp1[i]=dp1[i+1]; } wynik+=dp[i]; } cout<<wynik; return 0; } |
English