Ну... если я правильно понял, что фермер покупает удобрения только целыми килограммами, а не, скажем, отвешивает с точностью до миллиграмма, и если устроит решение на Паскале, то так:
Код:
Var
Super,Ammof,Price,Am1,Am2,Am3,Dif,
Pr_min,S_min,A_min:Integer;
Function Max2(M1,M2:Integer):Integer;
begin
if M1>M2 then Max2:=M1 else Max2:=M2;
end;
Function Max3(M1,M2,M3:Integer):Integer;
begin
Max3:=Max2(Max2(M1,M2),M3);
end;
Begin
writeln('Super Ammof Price');
Pr_min:=1000;
for Super:=0 to 8 do
begin
Dif:=8-Super*1;
If Dif<=0 then Am1:=0 else Am1:=(Dif div 5)+1;
Dif:=21-Super*12;
If Dif<=0 then Am2:=0 else Am2:=(Dif div 3)+1;
Dif:=16-Super*4;
If Dif<=0 then Am3:=0 else Am3:=(Dif div 4)+1;
Ammof:=Max3(Am1,Am2,Am3);
Price:=Super*5+Ammof*2;
if Price<Pr_min then
begin
Pr_min:=Price;
S_min:=Super;
A_min:=Ammof;
end;
writeln(Super:3,Ammof:7,Price:8);
end;
writeln;
Writeln('Result:');
Writeln('Superfosfat: ',S_min,' kg');
Writeln(' Ammofos: ',A_min,' kg');
Writeln(' Price: ',Pr_min);
readln
End.