Так как чертёжник оказался в начальной точке, значит после цикла у нас должно получиться число, обратное последней команде. В данном случае последняя команда такая: (8, -2), следовательно должны получить (-8, 2). Возьмём начальную координату (0, 0) т.к. так проще считать.
Посмотрим где будет чертёжник после нескольких выполнений цикла После первого по координатам х: 0 -1 + 0 + (-3) = -4 После первого по координатам y: 0 -4 + 2 + B = -2 + B
по оси Х нам не хватает ещё одного цикла, значит считаем после второго выполнения цикла После второго по координатам x: -4 * 2 = -8 После второго по координатам y: (-2 + B) * 2 = -4 + 2B
Кол-во во "повтори" мы нашли. Это 2 т.к. при двух прокатах цикла мы получаем х= -8, что нам и надо чтобы вернуться в начальную точку.
Осталось найти y. Согласно последней команде, y должен быть обратным -2, следовательно y = 2, составим уравнение и найдём B. 2 = -4 + 2B -2B = -4 - 2 -2B = -6 2B = 6 B = 3
begin var (cost, t, k) := (Arr(15, 70, 125, 230, 440), Arr(1, 5, 10, 20, 60), new integer[5]); var n := ReadInteger('n->'); for var i := 4 downto 0 do begin k[i] := n div t[i];n := n mod t[i]; end; if k[0] * cost[0] >= cost[1] then begin k[0] := 0;inc(k[1]); end; if k[0] * cost[0] + k[1] * cost[1] >= cost[2] then begin k[0] := 0;k[1] := 0;inc(k[2]); end; if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] >= cost[3] then begin k[0] := 0;k[1] := 0;k[2] := 0;inc(k[3]); end; if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] + k[3] * cost[3] >= cost[4] then begin k[0] := 0;k[1] := 0;k[2] := 0;k[3] := 0;inc(k[4]); end;
for var i := 0 to 4 do WritelnFormat('{0} билет(ов)- {1} штук(а)', t[i], k[i]); end.