Условие пытается немного обмануть решающего. На самом деле всегда можно выбрать Рахманов ломтик строки, состоящий из одного символа (действительно, если в искомой подстроке несколько символов, то каждый из них встречается не меньшее число раз, что и сама подстрока). В итоге задача превращается в тривиальную: считать строку и вывести символ, встречающийся максимальное число раз.
#include <iostream>
int main() {
char c, maxchar;
int count[26] = {0}, maxcount = 0;
while (std::cin.get(c)) {
count[c - 'a']++;
}
for (c = 0; c < 26; c++) {
if (count[c] > maxcount) {
maxcount = count[c];
maxchar = c;
}
}
std::cout << static_cast<char>(maxchar + 'a');
return 0;
}
Подробнее - на -
101₁₀ = 1100101₂
123₁₀ = 1111011₂
324₁₀ = 101000100₂
Объяснение:
101 / 2 = 50 + остаток 1
50 / 2 = 25 + остаток 0
25 / 2 = 12 + остаток 1
12 / 2 = 6 + остаток 0
6 / 2 = 3 + остаток 0
3 / 2 = 1 + остаток 1
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
101₁₀ = 1100101₂
123 / 2 = 61 + остаток 1
61 / 2 = 30 + остаток 1
30 / 2 = 15 + остаток 0
15 / 2 = 7 + остаток 1
7 / 2 = 3 + остаток 1
3 / 2 = 1 + остаток 1
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
123₁₀ = 1111011₂
324 / 2 = 162 + остаток 0
162 / 2 = 81 + остаток 0
81 / 2 = 40 + остаток 1
40 / 2 = 20 + остаток 0
20 / 2 = 10 + остаток 0
10 / 2 = 5 + остаток 0
5 / 2 = 2 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
324₁₀ = 101000100₂
Решение:
167 <= 16 x2 32 x2 64 x2 128 x2 256 x2 512 x2 1024 <= 102 <= 10