Условие пытается немного обмануть решающего. На самом деле всегда можно выбрать Рахманов ломтик строки, состоящий из одного символа (действительно, если в искомой подстроке несколько символов, то каждый из них встречается не меньшее число раз, что и сама подстрока). В итоге задача превращается в тривиальную: считать строку и вывести символ, встречающийся максимальное число раз.
алг нач цел a, sum, pro вывод 'Введите трёхзначное положительное число: ' ввод a если a<100 или a>999 то вывод 'Это не трёхзначное число. Перезапустите программу!' иначе sum := mod(a, 10) + mod(div(a,10),10) + div(a,100) pro := mod(a, 10) * mod(div(a,10),10) * div(a,100) если sum > 9 и sum < 100 то вывод 'Сумма цифр числа ',a,' - двухзначное число (',sum,')', нс иначе вывод 'Сумма цифр числа ',a,' - не двухзначное число (',sum,')', нс все если pro > 99 и pro < 1000 то вывод 'Произведение цифр числа ',a,' - трёхзначное число (',pro,')', нс иначе вывод 'Произведение цифр числа ',a,' - не трёхзначное число (',pro,')', нс все если mod(sum, 3) = 0 то вывод 'Эта же сумма (',sum,') кратна трём', нс иначе вывод 'Эта сумма (',sum,') не кратна трём', нс все все кон
Условие пытается немного обмануть решающего. На самом деле всегда можно выбрать Рахманов ломтик строки, состоящий из одного символа (действительно, если в искомой подстроке несколько символов, то каждый из них встречается не меньшее число раз, что и сама подстрока). В итоге задача превращается в тривиальную: считать строку и вывести символ, встречающийся максимальное число раз.
#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;
}
Подробнее - на -
нач
цел a, sum, pro
вывод 'Введите трёхзначное положительное число: '
ввод a
если a<100 или a>999
то вывод 'Это не трёхзначное число. Перезапустите программу!'
иначе
sum := mod(a, 10) + mod(div(a,10),10) + div(a,100)
pro := mod(a, 10) * mod(div(a,10),10) * div(a,100)
если sum > 9 и sum < 100
то вывод 'Сумма цифр числа ',a,' - двухзначное число (',sum,')', нс
иначе вывод 'Сумма цифр числа ',a,' - не двухзначное число (',sum,')', нс
все
если pro > 99 и pro < 1000
то вывод 'Произведение цифр числа ',a,' - трёхзначное число (',pro,')', нс
иначе вывод 'Произведение цифр числа ',a,' - не трёхзначное число (',pro,')', нс
все
если mod(sum, 3) = 0
то вывод 'Эта же сумма (',sum,') кратна трём', нс
иначе вывод 'Эта сумма (',sum,') не кратна трём', нс
все
все
кон