// PascalABC.NET 3.1, сборка 1200 от 13.03.2016 begin var a:=MatrixRandom(7,7,0,9); var k:=0; for var i:=0 to 6 do begin for var j:=0 to 6 do begin Write(a[i,j]:3); if a[i,j] in [1..5] then Inc(k) end; Writeln end; Writeln('Кол-во элементов на [1,5]: ',k) end.
const n=7; var a:array[1..n,1..n] of integer; i,j,k:integer; begin Randomize; k:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(10); Write(a[i,j]:3); if a[i,j] in [1..5] then Inc(k) end; Writeln end; Writeln('Кол-во элементов на [1,5]: ',k) end.
Я уже решал эту задачу. Я руками за 5 дней делаю 5 коробок, и на 6-ой день покупаю духовку. Руками и духовкой я делаю 2 коробки в день, за 5 дней - 10 коробок. На 6-ой день я покупаю вторую духовку. Руками и 2-мя духовками я за 5 дней делаю 15 коробок, и на 6-ой день покупаю 3-ью духовку. И так далее. Чтобы купить очередную духовку, я работаю 5 дней, а на 6-ой день ее покупаю, и у меня печенья не остается совсем. То есть, после покупки каждой духовки я начинаю всё с нуля. Главное - понять, когда нужно остановиться покупать духовки и начать уже копить печенье на складе. Итак, подведем итоги: 1) На покупку каждой духовки мы тратим 6 суток и начинаем с нуля. 2) Имея n духовок, мы делаем 584 коробок печенья за trunc(584/(n+1)) + 1 дней, где trunc(x) = [x] - это целая часть x. 3) Всего мы тратим времени T(n) = 6n + trunc(584/(n+1)) + 1 --> min Минимум функции trunc(584/(n+1)) совпадает с минимумом 584/(n+1) T(n) = 6n + 584/(n+1) + 1 --> min T'(n) = 6 - 584/(n+1)^2 = (6(n+1)^2 - 584) / (n+1)^2 = 0 6(n+1)^2 - 584 = 0 (n+1)^2 = 584/6 = 97,33 n + 1 = √97,33 ~ 9,86 = 10 n = 9 Значит, нужно ограничиться покупкой 9 духовок. За 6*9 = 54 дня мы их купим, и за 584/10 ~ 59 дней мы соберем нужное количество коробок на складе. Всего мы истратим 54 + 59 = 113 дней.