//Как-то громоздко получилось, но я так вижу. Эх, выходные. const n=5; var a:array[1..n] of integer; b:array[0..8] of integer; ar:array[1..n] of integer; i,c,j:integer; begin randomize; writeln('Array:'); for i:=1 to n do begin a[i]:=random(8); write(a[i]:4); end; for i:=1 to n do begin; for j:=0 to 8 do if a[i]=j then inc(b[j]); end; for i:=1 to n do begin; for j:=0 to 8 do if (b[j]>1) and (a[i]=j) then a[i]:=9; if a[i]<>9 then begin; inc(c); ar[c]:=a[i]; end; end; writeln; for i:=0 to 8 do writeln(i,'=',b[i]); writeln; writeln('Final array:'); for i:=1 to n do if a[i]=9 then a[i]:=0;
for i:=1 to c do begin; a[i]:=ar[i]; write(a[i]:4); end; end.
Вообщем стратегия такая: сначала наращиваем мощности, а потом копим печеньки Программа вычисляет оптимальную максимальную мощность. Это оказывается 9 или 10 печенек в день (т.е 8 или 9 духовок) в минимуме в общем целом на это уйдет 108 дней
const n=5;
var a:array[1..n] of integer;
b:array[0..8] of integer;
ar:array[1..n] of integer;
i,c,j:integer;
begin
randomize;
writeln('Array:');
for i:=1 to n do
begin
a[i]:=random(8);
write(a[i]:4);
end;
for i:=1 to n do
begin;
for j:=0 to 8 do
if a[i]=j then inc(b[j]);
end;
for i:=1 to n do
begin;
for j:=0 to 8 do
if (b[j]>1) and (a[i]=j) then a[i]:=9;
if a[i]<>9 then
begin;
inc(c);
ar[c]:=a[i];
end;
end;
writeln;
for i:=0 to 8 do writeln(i,'=',b[i]);
writeln;
writeln('Final array:');
for i:=1 to n do
if a[i]=9 then a[i]:=0;
for i:=1 to c do
begin;
a[i]:=ar[i];
write(a[i]:4);
end;
end.
Программа вычисляет оптимальную максимальную мощность. Это оказывается 9 или 10 печенек в день (т.е 8 или 9 духовок)
в минимуме в общем целом на это уйдет 108 дней
код на руби
(1..100).step(1) {|max_productivity|
productivity = 1
cockies = 0
days = 0
upgrade_cost = 5 * productivity
while cockies < 532
if cockies >= upgrade_cost and productivity < max_productivity
cockies -= upgrade_cost
productivity += 1
upgrade_cost = 5 * productivity
else
cockies += productivity
end
days += 1
end
p [max_productivity, days, cockies, productivity]
}
Вывод (куска)
[6, 119, 534, 6]
[7, 112, 532, 7]
[8, 109, 536, 8]
[9, 108, 540, 9]
[10, 108, 540, 10]
[11, 109, 539, 11]
[12, 111, 540, 12]
[13, 113, 533, 13]
[14, 116, 532, 14]
[15, 120, 540, 15]
[16, 124, 544, 16]
[17, 128, 544, 17]
[18, 132, 540, 18]