#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define imie(x...) cerr << "[" #x "]: ", [](auto... $) {((cerr << $ << "; "), ...); }(x), cerr << '\n'
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef long double ld;
const int mod=1e9+7;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
string a, b, c;
cin >> a >> b >> c;
ll ans = 0, dp1 = 0, dp2 = 0;
for(int i = a.size() - 1; i >= 0; i--) {
int x = (a[i] - '0') + (b[i] - '0') - (c[i] - '0');
ll dp3 = 0, dp4 = 0;
if(x == 0) {
dp3 = dp1 + 1;
} else if(x == 10) {
dp4 = dp1 + 1;
} else if(x == -1) {
dp3 = dp2;
} else if(x == 9) {
dp4 = dp2;
}
ans += dp3;
dp1 = dp3;
dp2 = dp4;
}
cout << ans;
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> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define imie(x...) cerr << "[" #x "]: ", [](auto... $) {((cerr << $ << "; "), ...); }(x), cerr << '\n' using namespace std; using namespace __gnu_pbds; typedef long long ll; typedef long double ld; const int mod=1e9+7; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string a, b, c; cin >> a >> b >> c; ll ans = 0, dp1 = 0, dp2 = 0; for(int i = a.size() - 1; i >= 0; i--) { int x = (a[i] - '0') + (b[i] - '0') - (c[i] - '0'); ll dp3 = 0, dp4 = 0; if(x == 0) { dp3 = dp1 + 1; } else if(x == 10) { dp4 = dp1 + 1; } else if(x == -1) { dp3 = dp2; } else if(x == 9) { dp4 = dp2; } ans += dp3; dp1 = dp3; dp2 = dp4; } cout << ans; return 0; } |
English