会PASCAL语言的来!

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:03:20
请解决问题!!!!!!有pascal7.0啊,可以的吧程序复制到回答处!!

1.期未来临了,班长决定将剩余班费120元钱,用于购买若干支铅笔奖励给一些学习好、表现好的同学。已知商店里有三种铅笔,它们的单价为6元、5元和4元。班长想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮班长制订出一种买笔的方案。(40分)
输入输出要求:
输入剩余班费X元
输出 三种笔各买多少支(a,b,c分别表示6元 5元 4元 的笔)
[输入样例]
21
[输出样例]
a=0 b=1 c=4

拜托各位高手拉!

var
i,j,k:integer;
n,a,b,c,max:integer;
x,y,z:integer;
begin
readln(n);
for i:=1 to n div 4 do
for j:=1 to n div 5 do
for k:=1 to n div 6 do
if (n-i*4-j*5-k*6=0)and(i+j+k>max) then
begin
max:=i+j+k;
x:=i;y:=j;z:=k;
end;
writeln('a=',x,'b=',y,'c=',z);
end.
时间复杂度是O(n^3);
空间:O(1);

program abc;
var x:longint;
a,b,c,aa,bb,cc:longint;
max:longint;
begin
readln(x);
max:=0;
aa:=0;
bb:=0;
cc:=0;
for c:=0 to x div 4 do begin
for b:=0 to (x-c*4) div 5 do begin
for a:=0 to (x-c*4-b*5) div 6 do begin
if (a+b+c>max) and ((a*6+b*5+c*4)<=x) then begin
max:=a+b+c;
aa:=a;
bb:=b;
cc:=c;
end;