. В пустой автобус, в котором есть А сидячих мест и В стоячих, по очереди входят N пассажиров. Каждый входящий пассажир, если видит свободное сидячее место, занимает его. Если же все сидячие места уже заняты, но есть свободное стоячее место, пассажир проходит и занимает стоячее место. Если же нет ни сидячих, ни стоячих свободных мест, пассажир выходит из автобуса. Требуется выяснить, сколько будет занято мест после того, как пассажиры зайдут в автобус.
Входные данные. В единственной строке задаются три целых числа А, В, N {О < А, В, N <
10000).
Выходные данные. Выведите два целых числа, обозначающих количество сидячих и стоячих мест соответственно, которые займут пассажиры.
uses crt;
Var mas:array[1..1000, 1..1000] of integer;
N,M,i,j,k:integer;
Begin
Writeln('Введите размер матрицы N*M');
Write('N = ');
readln(N);
Write('M = ');
readln(M);
if (M>1000) or (N>1000) or (M<1) or (N<1)
then
Writeln('Ошибка, указанные значения выходят за пределы матрицы') else
Begin
Writeln('Введите элементы матрицы');
k:=0;
for i:=1 to N do
for j:=1 to M do
Begin
readln(mas[i,j]);
if (mas[i,j] mod 2 = 0) then k:=k+1;
end;
Writeln();
Writeln('Исходная матрица');
for i:=1 to N do
Begin
for j:=1 to M do
Begin
Write(mas[i,j], ' ')
end;
Writeln();
end;
Writeln();
Writeln('Количество четных элементов = ',k);
end;
readln;
end.
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
begin
Writeln(Range(1,100).Select(i->sin(i)*cos(i)).Where(x->x<>0).Average)
end.
Тестовое решение:
-0.00136006072493969
2. А вот так учат писать это же школьные учителя:
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
var
m:array[1..100] of real;
i,k:integer;
s:real;
begin
s:=0;
k:=0;
for i:=1 to 100 do begin
m[i]:=sin(i)*cos(i);
if m[i]<>0 then begin
s:=s+m[i];
k:=k+1
end
end;
Writeln(s/k)
end.
Тестовое решение:
-0.00136006072493969