#include <bits/stdc++.h>
using namespace std;
const int base = 1 << 20;
long long ans = 0, ac_ans = 0; //result ; aktualna ilosc liczb stanowiacych potencjalny poczatek dla liczby
int32_t main(){
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
string s1, s2, res; cin >> s1 >> s2 >> res;
int n = s1.size();
int add_one = 0;
for(int i = n - 1; i >= 0; i--){
int one = int(s1[i] - '0'), two = int(s2[i] - '0'), res_t = int(res[i] - '0');
if(one + two + add_one == res_t || one + two + add_one - 10 == res_t){
if(one + two + add_one < 10){
ac_ans++;
ans += ac_ans;
}
if(one + two + add_one >= 10) add_one = 1;
else add_one = 0;
}
else{
ac_ans = 0;
if(one + two == res_t){
ac_ans++;
ans++;
}
if(one + two >= 10 && one + two - 10 == res_t) add_one = 1;
else add_one = 0;
}
}
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 38 39 40 | #include <bits/stdc++.h> using namespace std; const int base = 1 << 20; long long ans = 0, ac_ans = 0; //result ; aktualna ilosc liczb stanowiacych potencjalny poczatek dla liczby int32_t main(){ std::ios_base::sync_with_stdio(0); std::cin.tie(0); string s1, s2, res; cin >> s1 >> s2 >> res; int n = s1.size(); int add_one = 0; for(int i = n - 1; i >= 0; i--){ int one = int(s1[i] - '0'), two = int(s2[i] - '0'), res_t = int(res[i] - '0'); if(one + two + add_one == res_t || one + two + add_one - 10 == res_t){ if(one + two + add_one < 10){ ac_ans++; ans += ac_ans; } if(one + two + add_one >= 10) add_one = 1; else add_one = 0; } else{ ac_ans = 0; if(one + two == res_t){ ac_ans++; ans++; } if(one + two >= 10 && one + two - 10 == res_t) add_one = 1; else add_one = 0; } } cout << ans; return 0; } |
English