Một điểm giao dịch của ngân hàng X có N loại tiền mệnh giá từ A[1], A[2], A[3], . . , A[N] (đơn vị ngàn đồng) với số lượng tiền mỗi loại không giới hạn. Một khách hàng cần rút với số tiền là M (ngàn đồng). Hãy cho biết cần bao nhiêu tiền mỗi loại để chi trả sao cho số tờ là ít nhất. - Bài Tập Pascal Tổng Hợp

Một điểm giao dịch của ngân hàng X có N loại tiền mệnh giá từ A[1], A[2], A[3], . . , A[N] (đơn vị ngàn đồng) với số lượng tiền mỗi loại không giới hạn. Một khách hàng cần rút với số tiền là M (ngàn đồng). Hãy cho biết cần bao nhiêu tiền mỗi loại để chi trả sao cho số tờ là ít nhất.

Một điểm giao dịch của ngân hàng X có N loại tiền mệnh giá từ A[1], A[2], A[3], . . , A[N] (đơn vị ngàn đồng) với số lượng tiền mỗi loại không giới hạn. Một khách hàng cần rút với số tiền là M (ngàn đồng). Hãy cho biết cần bao nhiêu tiền mỗi loại để chi trả sao cho số tờ là ít nhất.Cho biết: N ≤ 9; A[i] ≤ 500; M ≤ 10000

Dữ liệu vào: Cho trong file INP.TXT gồm 2 dòng:
- Dòng đầu là 2 sốN, M;
- Dòng thứ hai ghi N số nguyên dương A[1], A[2], A[3], . . , A[N]
Dữ liệu ra: Ghi vào file OUT.TXT gồm:
- Dòng đầu ghi số lượng tờ phải trả;
- Dòng thứ hai ghi N số nguyên không âm ứng với số tờ cần trả cho mỗi loại tiền.
Các số ghi trên cùng một dòng được cách ít nhất một dấu cách.

var i,j,n,m,k,tg,t,tong:longint;
a,b,c:array[1..9] of longint;
f1,f2:text;
begin
assign(f1,'inp.text');reset(f1);
assign(f2,'out.text');rewrite(f2);
readln(f1,n,m);
for i:=1 to n do
begin
read(f1,a[i]);
c[i]:=a[i];
end;
fillchar(b,sizeof(b),0);
for j:=1 to n-1 do
for k:=j+1 to n do
if c[j] > c[k] then
begin
tg:=c[j];
c[j]:=c[k];
c[k]:=tg;
end;
t:=n;
while m >= c[1] do
begin
k:=m-c[t];
if k >= 0 then
for i:=1 to n do if a[i]=c[t] then inc(b[i])
else m:=k;
if m < c[t] then dec(t);
end;
tong:=0;
for i:=1 to n do tong:=tong + b[i];
writeln(f2,tong);
for j:=1 to n do write(f2,b[j],' ');
tong:=0;
close(f1);close(f2);

end.
Latest
Previous
Next Post »