#include <iostream>
using namespace std;
int main()
{
uint64_t counter = 0, tmp_counter = 0;
bool continuation = false;
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
string s1, s2, s3;
std::cin >> s1 >> s2 >> s3;
for(int i = 0; i < s1.size(); ++i){
if(s1[i] + s2[i] - 48 == s3[i]){
s3[i] = 0;
}
else if(s1[i] + s2[i] - 48 == s3[i] - 1){
s3[i] = 1;
}
else if(s1[i] + s2[i] - 48 == s3[i] + 10){
s3[i] = 10;
}
else if(s1[i] + s2[i] - 48 == s3[i] + 9){
s3[i] = 9;
}
else{
s3[i] = 2;
}
}
for(int i = 0; i < s1.size(); ++i){
if(continuation){
if(s3[i] == 9){
//pass
}
else if(s3[i] == 10){
++tmp_counter;
continuation = false;
}
else if(s3[i] == 1){
counter += (tmp_counter * (tmp_counter + 1)) >> 1;
tmp_counter = 0;
}
else if(s3[i] == 0){
counter += (tmp_counter * (tmp_counter + 1)) >> 1;
tmp_counter = 1;
continuation = false;
}
else{
counter += (tmp_counter * (tmp_counter + 1)) >> 1;
tmp_counter = 0;
continuation = false;
}
}
else{
if(s3[i] == 0){
++tmp_counter;
}
else if(s3[i] == 1){
continuation = true;
}
else{
counter += (tmp_counter * (tmp_counter + 1)) >> 1;
tmp_counter = 0;
}
}
}
counter += (tmp_counter * (tmp_counter + 1)) >> 1;
std::cout << counter << std::endl;
cout.flush();
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #include <iostream> using namespace std; int main() { uint64_t counter = 0, tmp_counter = 0; bool continuation = false; std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); string s1, s2, s3; std::cin >> s1 >> s2 >> s3; for(int i = 0; i < s1.size(); ++i){ if(s1[i] + s2[i] - 48 == s3[i]){ s3[i] = 0; } else if(s1[i] + s2[i] - 48 == s3[i] - 1){ s3[i] = 1; } else if(s1[i] + s2[i] - 48 == s3[i] + 10){ s3[i] = 10; } else if(s1[i] + s2[i] - 48 == s3[i] + 9){ s3[i] = 9; } else{ s3[i] = 2; } } for(int i = 0; i < s1.size(); ++i){ if(continuation){ if(s3[i] == 9){ //pass } else if(s3[i] == 10){ ++tmp_counter; continuation = false; } else if(s3[i] == 1){ counter += (tmp_counter * (tmp_counter + 1)) >> 1; tmp_counter = 0; } else if(s3[i] == 0){ counter += (tmp_counter * (tmp_counter + 1)) >> 1; tmp_counter = 1; continuation = false; } else{ counter += (tmp_counter * (tmp_counter + 1)) >> 1; tmp_counter = 0; continuation = false; } } else{ if(s3[i] == 0){ ++tmp_counter; } else if(s3[i] == 1){ continuation = true; } else{ counter += (tmp_counter * (tmp_counter + 1)) >> 1; tmp_counter = 0; } } } counter += (tmp_counter * (tmp_counter + 1)) >> 1; std::cout << counter << std::endl; cout.flush(); return 0; } |
English