Tin học Đếm các cách rút tiền ngân hàng

Phan Mai Tuệ Nhi

Học sinh mới
Thành viên
21 Tháng hai 2019
1
0
1
22
Quảng Nam
THPT Nguyễn Huệ
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Thầy mình cho đề bài này nhưng mình giải không ra, các bạn giúp mình với. Cảm ơn các bạn nhiều!

Một người đi rút tiền ở một ngân hàng. Anh ta cần rút một khoản đúng M đồng. Ngân hàng có N đồng tiền A1, A2,.., AN. Hỏi ngân hàng có bao nhiêu cách trả tiền.
Dữ liệu vào: Trong file: MONEY.INP có dạng:
+ Dòng đầu là hai số N và M (N <=100, M <= 10000) cách nhau bởi một dấu cách.
+ Dòng tiếp theo là các phần tử của mảng A.
Kết quả ra file: MONEY.OUT gồm một dòng duy nhất là số cách trả tiền.
MONEY.INPMONEY.OUT
5 10
1 2 3 4 5
3
[TBODY] [/TBODY]

( pascal nha m.n)
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
Thầy mình cho đề bài này nhưng mình giải không ra, các bạn giúp mình với. Cảm ơn các bạn nhiều!

Một người đi rút tiền ở một ngân hàng. Anh ta cần rút một khoản đúng M đồng. Ngân hàng có N đồng tiền A1, A2,.., AN. Hỏi ngân hàng có bao nhiêu cách trả tiền.
Dữ liệu vào: Trong file: MONEY.INP có dạng:
+ Dòng đầu là hai số N và M (N <=100, M <= 10000) cách nhau bởi một dấu cách.
+ Dòng tiếp theo là các phần tử của mảng A.
Kết quả ra file: MONEY.OUT gồm một dòng duy nhất là số cách trả tiền.
MONEY.INPMONEY.OUT
5 10
1 2 3 4 5
3
[TBODY] [/TBODY]
( pascal nha m.n)
Mình thấy bài này cũng gần giốn bài dưới, bạn tham khảo nha

Tại một trạm tiền ATM có các tờ tiền mệnh giá là 50 đồng,100 đồng, 200 đồng. Một khách hàng muốn rút số tiền một số tiền là N đồng, hệ thống có thể đưa ra nhiều cách khác nhau để đưa tiền cho khách hàng
Ví dụ:
Monkey.inpmonkey.out
2001 x 200
2 x 100
2 x 50 + 1 x 100
4 x 50
[TBODY] [/TBODY]
Mã:
Var
 fi,fo:text;
 kt:boolean;
 n,t,j,k:integer;
Begin
 assign(fi,'monkey.inp');reset(fi);
 assign(fo,'monkey.out');rewrite(fo);
 read(fi,n);
 kt:=false;
 For i:=0 to (n div 10) do
   For j:=0 to (n div 100) do
     For k:=0 to (n div 200) do
       if (i*50+j*100+k*200=n) then
        begin
           kt:=true;
           if i<>0 then write(fo,i,'x 50');
           If (i<>0) and (j<>0)  and (k<>0) then write(fo,'+');
           If j<>0 then write(fo,'+');
           If (k<>0) and (j<>0) then write(fo,'+');
           If (k<>0)  then write(fo,k,'x 200');
           writeln(fo);
        end;
  If kt=false then write(fo,'-1);
Close(fi);Close(fo);
End./CODE]
 
  • Like
Reactions: Thảo hahi.love
Top Bottom