#include <bits/stdc++.h>
using namespace std;
int main(){
string s1, s2, w;
cin >> s1 >> s2 >> w;
long long wynik = 0, dp[s1.size()][2];
for(int i = s1.size()-1; i >= 0; i--){
int a = s1[i]-'0', b = s2[i]-'0', c = w[i]-'0';
dp[i][0] = 0; dp[i][1] = 0;
if(a+b == c) dp[i][0] = 1;
if(a+b == c && i < s1.size()-1) dp[i][0] += dp[i+1][0];
if(a+b-10 == c) dp[i][1] += 1;
if(a+b-10 == c && i < s1.size()-1) dp[i][1] += dp[i+1][0];
if(a+b == c-1 && i < s1.size()-1) dp[i][0] += dp[i+1][1];
if(a+b-10 == c-1 && i < s1.size()-1) dp[i][1] += dp[i+1][1];
wynik += dp[i][0];
}
cout << wynik;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <bits/stdc++.h> using namespace std; int main(){ string s1, s2, w; cin >> s1 >> s2 >> w; long long wynik = 0, dp[s1.size()][2]; for(int i = s1.size()-1; i >= 0; i--){ int a = s1[i]-'0', b = s2[i]-'0', c = w[i]-'0'; dp[i][0] = 0; dp[i][1] = 0; if(a+b == c) dp[i][0] = 1; if(a+b == c && i < s1.size()-1) dp[i][0] += dp[i+1][0]; if(a+b-10 == c) dp[i][1] += 1; if(a+b-10 == c && i < s1.size()-1) dp[i][1] += dp[i+1][0]; if(a+b == c-1 && i < s1.size()-1) dp[i][0] += dp[i+1][1]; if(a+b-10 == c-1 && i < s1.size()-1) dp[i][1] += dp[i+1][1]; wynik += dp[i][0]; } cout << wynik; } |
English