Такой вариант на простом паскале со стратегией жадность
var n, s, i: integer; x: array[1..100]of integer; answer: string;
begin readln(n); for i := 1 to n do read(x[i]); readln(s);
answer := IntToStr(s) + ' = '; for i := n downto 1 do begin answer := answer + IntToStr(s div x[i]) + '*' + IntToStr(x[i]); s := s mod x[i]; if i > 1 then answer := answer + ' + '; end;
if s <> 0 then writeln('NO') else writeln(answer); end.
Более полный и правильный вариант решения, но и куда более сложный
//PascalABC.Net 3.1 сборка 1200 uses System.Collections.Generic; uses System; var x := new List<integer>; c := new List<Tuple<string, integer>>;
procedure getParcelling(sum, step: integer; coefficients: string; count: integer); begin if step >= x.Count then begin if sum = 0 then c.Add((coefficients, count)); Exit; end; if step < 0 then step := 0;
for var j := 0 to (sum div x[step]) do begin var s := ''; if j > 0 then begin if step > 0 then s += ' + '; s += IntToStr(j) + '*' + IntToStr(x[step]); end; getParcelling(sum - x[step] * j, step + 1, coefficients + s, count + j); end; end;
begin x := ReadArrInteger('x:', ReadInteger('n =')).ToList; var sum := ReadInteger('sum =');
getParcelling(sum, 0, '', 0); if c.Count = 0 then writeln('No') else begin var min := c.Min(cc -> cc.Item2); Println(c.Where(cc -> cc.Item2 = min)); end; end.
Считаем, сколько пройдёт минут после 2N+1 урока: (2N + 1)*45 - число минут собственно на учёбу N * 15 - число минут на длинные перерывы N * 5 - число минут на короткие перерывы
Считаем, сколько пройдёт минут после 2N уроков: 2N*45 - число минут собственно на учёбу (N - 1) * 15 - число минут на длинные перерывы N * 5 - число минут на короткие перерывы
В общем случае, после M уроков (сравниваем ответы): M*45 - число минут собственно на учёбу (M div 2 - (M+1) mod 2) * 15 - число минут на длинные перерывы (M div 2) * 5 - число минут на короткие перерывы
Т.о., время T (в минутах) можно найти по формуле: T = M*45 + (M div 2 - (M+1) mod 2) * 15 + (M div 2) * 5
Если нужно привести к формату H:M, то H = 9 + (T div 60) M = T mod 60
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку