Извини, конечно, за некрасивый алгоритм, но он был нацелен больше на понимание, нежели на "красоту"
28800 / (6 * 40 * 60) = 2 байта на символ или 16 битов.
Переформулируем задачу на теорию графов:
Если все вершины графа разделить на два множества, то найдется ребро, соединяющее вершину одного множества с вершиной другого. Доказать, что граф связный.
Докажем от противного. Пусть граф несвязный, тогда у него есть как минимум две компоненты связности. Тогда возьмем такое разбиение графа на группы: в первой группе будут только вершины первой компоненты связности, а в другой группе будут все остальные вершины. В таком случае, по условию задачи существует ребро из вершины первой группы в вершину второй, но это невозможно, так как вершины принадлежат к разным компонентам связности, а по определению между двумя разными компонентами связности нет ребер. Противоречие, следовательно, граф связный. Что и требовалось доказать.
//Pascal ABC.NET v3.1 сборка 1172
var
n, m: integer;
begin
read(n, m);
repeat
writeln('Текущее значение N:', n, ' ,до m:', m - n);
inc(n);
until n = m;
writeln('Завершено, n=m');
end.
Пример ввода:
12
20
Пример вывода:
Текущее значение N:12 ,до m:8
Текущее значение N:13 ,до m:7
Текущее значение N:14 ,до m:6
Текущее значение N:15 ,до m:5
Текущее значение N:16 ,до m:4
Текущее значение N:17 ,до m:3
Текущее значение N:18 ,до m:2
Текущее значение N:19 ,до m:1
Завершено, n=m