Рассуждаем так. Предположим, мы хотим записать все возможные распределения. Введём обозначения: ноль - ученик, 1 - разделитель между аудиториями. Тогда варианты распределения запишутся так:
1) 0101010000000 - в 1-й, 2-й и 3-й аудиториях по 1 ученику, в 4-й аудитории 7 учеников,
2) 0101001000000 - в 1-й и 2-й аудиториях по 1 ученику, в 3-й аудитории 2 ученика, в 4-й аудитории 6 учеников,
и т.д.
Чтоб найти количество всех таких вариантов, запишем 10 нулей (учеников) в ряд:
0 0 0 0 0 0 0 0 0 0
Между ними есть 9 промежутков. Нам нужно узнать сколько есть разместить три разделителя (единички) на этих 9 промежутках. Это вычисляется по формуле:
ответ: 84
PS Если существенно не только количество учеников в аудиториях, но и порядок размещения (то есть кто конкретно в какую аудиторию пойдет), то полученный ответ надо умножить на количество вариантов размещения 10 учащихся в ряд: Р=10!= 3628800
Тогда ответ будет:
Program Denisqaa;
uses crt;
const mas2:array[1..10] of integer=(-7, 89, 64, -43, 4, 6, 8, -12, 55, 99);
var
res: array[1..10] of integer;
i,sum:integer;
begin
writeln('++');
writeln('| ПРОГРАММА Denisqaa |');
writeln('++');
writeln('| Исходный массив | Новый массив |');
writeln('++');
sum:=0;
for i:=1 to 10 do
begin
if mas2[i]<0 then res[i]:=mas2[i]*2;
if mas2[i]>0 then res[i]:=mas2[i]*mas2[i];
if mas2[i]=0 then res[i]:=mas2[i];
sum:=sum+res[i];
writeln('| ',mas2[i]:8,' | ',res[i]:8,' | ');
writeln('++');
end;
writeln();
writeln('Сумма элементов нового массива ',sum)
end.