Условие пытается немного обмануть решающего. На самом деле всегда можно выбрать Рахманов ломтик строки, состоящий из одного символа (действительно, если в искомой подстроке несколько символов, то каждый из них встречается не меньшее число раз, что и сама подстрока). В итоге задача превращается в тривиальную: считать строку и вывести символ, встречающийся максимальное число раз.
#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;
}
Подробнее - на -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//Напишите программу,которая в последовательности целых чисел определяет количество чисел,кратных 5 или 9.
//Программа получает на вход целые числа,количество введённых чисел неизвестно,последовательность чисел заканчивается числом 0.
//Количество чисел не превышает 1000.Введённые числа по модулю не превышают 30 000.Программа должна вывести одно число:количество чисел,кратных 5 или 9.
int n = 0; // количество
int a = int.Parse(Console.ReadLine());
while (a != 0)
{
if (a % 5 == 0 || a % 9 == 0)
n++;
a = int.Parse(Console.ReadLine());
}
Console.WriteLine(n);
Console.ReadKey();
}
}
}