#include <bits/stdc++.h> using namespace std; string s; long long result; int a, b, c; void add(char x) { x == 'a' ? a++ : x == 'b' ? b++ : c++; } void sub(char x) { x == 'a' ? a-- : x == 'b' ? b-- : c--; } int condition() { return (a + b == 0 || a + c == 0 || b + c == 0) || ((!a && b == c) || (!b && a == c) || (!c && a == b)) || (a == b && b == c); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> s; for (int length = 1; length <= s.size(); length++) { a = 0, b = 0, c = 0; for (int i = 0; i < length; i++) { add(s[i]); } result += condition(); for (int i = length; i < s.size(); i++) { add(s[i]); sub(s[i - length]); result += condition(); } } cout << result; 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 | #include <bits/stdc++.h> using namespace std; string s; long long result; int a, b, c; void add(char x) { x == 'a' ? a++ : x == 'b' ? b++ : c++; } void sub(char x) { x == 'a' ? a-- : x == 'b' ? b-- : c--; } int condition() { return (a + b == 0 || a + c == 0 || b + c == 0) || ((!a && b == c) || (!b && a == c) || (!c && a == b)) || (a == b && b == c); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> s; for (int length = 1; length <= s.size(); length++) { a = 0, b = 0, c = 0; for (int i = 0; i < length; i++) { add(s[i]); } result += condition(); for (int i = length; i < s.size(); i++) { add(s[i]); sub(s[i - length]); result += condition(); } } cout << result; return 0; } |