#include<cstdio>
#include<vector>
using namespace std;
int main() {
vector<int> firstNumber;
char c;
do {
scanf("%c", &c);
if (c != '\n') {
firstNumber.push_back(c - '0');
}
} while (c != '\n');
vector<int> secondNumber(firstNumber.size());
for (int i = 0; i < firstNumber.size(); i++) {
char digit;
scanf("%c", &digit);
secondNumber[i] = digit - '0';
}
scanf("\n");
vector<int> thirdNumber(firstNumber.size());
for (int i = 0; i < thirdNumber.size(); i++) {
char digit;
scanf("%c", &digit);
thirdNumber[i] = digit - '0';
}
long long found = 0;
int currGroups = 0;
int groupState = -1;
for (int i = 0; i < firstNumber.size(); i++) {
if (firstNumber[i] + secondNumber[i] == thirdNumber[i]) {
if (groupState == -1) {
currGroups += 1;
} else {
groupState = -1;
currGroups = 1;
}
found += currGroups;
} else if (firstNumber[i] + secondNumber[i] + 1 == thirdNumber[i]) {
if (groupState == 0) {
currGroups = 0;
}
groupState = 0;
} else if (firstNumber[i] + secondNumber[i] - 9 == thirdNumber[i]) {
if (groupState == -1) {
currGroups = 0;
}
} else if (firstNumber[i] + secondNumber[i] - 10 == thirdNumber[i]) {
if (groupState == 0) {
currGroups += 1;
found += currGroups;
} else {
currGroups = 0;
}
groupState = -1;
} else {
groupState = -1;
currGroups = 0;
}
}
printf("%lld\n", found);
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 | #include<cstdio> #include<vector> using namespace std; int main() { vector<int> firstNumber; char c; do { scanf("%c", &c); if (c != '\n') { firstNumber.push_back(c - '0'); } } while (c != '\n'); vector<int> secondNumber(firstNumber.size()); for (int i = 0; i < firstNumber.size(); i++) { char digit; scanf("%c", &digit); secondNumber[i] = digit - '0'; } scanf("\n"); vector<int> thirdNumber(firstNumber.size()); for (int i = 0; i < thirdNumber.size(); i++) { char digit; scanf("%c", &digit); thirdNumber[i] = digit - '0'; } long long found = 0; int currGroups = 0; int groupState = -1; for (int i = 0; i < firstNumber.size(); i++) { if (firstNumber[i] + secondNumber[i] == thirdNumber[i]) { if (groupState == -1) { currGroups += 1; } else { groupState = -1; currGroups = 1; } found += currGroups; } else if (firstNumber[i] + secondNumber[i] + 1 == thirdNumber[i]) { if (groupState == 0) { currGroups = 0; } groupState = 0; } else if (firstNumber[i] + secondNumber[i] - 9 == thirdNumber[i]) { if (groupState == -1) { currGroups = 0; } } else if (firstNumber[i] + secondNumber[i] - 10 == thirdNumber[i]) { if (groupState == 0) { currGroups += 1; found += currGroups; } else { currGroups = 0; } groupState = -1; } else { groupState = -1; currGroups = 0; } } printf("%lld\n", found); return 0; } |
English