Для начала отметим, что переправа не состоится только в одном случае : если число разбойников будет превышать число купцов на берегу.
Итак, пусть берег, на котором стоят три купца и три разбойника , будет называться первым, а берег на который нужно перебраться - вторым. Попробуем вместить в двухместную лодку двух купцов, тогда на первом берегу останется 1 купец и 3 забойника, по условию это недопустимо, идем дальше: в лодку садятся один купец и один разбойник, на берегу остаются два купца и два разбойника, этот расклад нам подходит с него и начнем.
1 рейс- в лодку садятся 1 купец и 1 разбойник и переправляются на второй берег, на нем оставим купца(1 разбойник всегда будет находиться в лодке и переправлять остальных) На первом берегу 2 купца, 2 разбойника(2к;2р)
2 рейс - возвращение к первому берегу
3 рейс- в лодку садится 1 разбойник, т. к. если сядет 1 купец то разбойников на первом берегу будет больше, переправа на второй берег (2к;1р)
4 рейс - возвращение
5 рейс - в лодку садится 1 купец, (1к;1р), переправа
6 рейс - возвращение
7 рейс -в лодку садится 1 разбойник (1к;0 р), переправа
8 рейс - возвращение
9 рейс - в лодку садится 1 купец (0к;0р), переправа 1 купца и 1 разбойника
ответ:Переправа состоялась за 9 рейсов, пострадавших не обнаружено.
как то так)
function F() : integer;
var
k,i : integer;
begin
k := 0;
for i := 100 to 999 do
if (i mod 13 = 0) and (i mod 100 <> 3) then
k := k +1;
Result := k;
end;
begin
writeln (f());
end.
const
n = 30;
var
a : array [1..n] of integer;
i,b : integer;
r : boolean;
begin
readln (b);
i := 1;
r := false;
While (not r) and (i <= n) do
begin
if a[i] = b then
r := true;
i := i +1;
end;
if r then
writeln ('Есть')
else
writeln ('Нет');
end.