trang chủ / đề bài / prevoi19_icecream

Icecream

Đề bài

Mô tả

Ở cỗ máy bán kem tự động, mỗi que kem được bán với giá 50 cent và máy chỉ chấp nhận các loại đồng xu 50 cent, 1 USD và 2 USD (1 USD =100 cent). Ban đầu, máy có M50 xu 50 cent, M1 xu 1 USD và M2 xu 2 USD.

Tiền thối khi trả 1 USD chỉ được trả nếu máy có đồng 50 cent. Tiền thối khi trả 2 USD chỉ được trả khi máy có (a) một xu 1 USD và một xu 50 cent hoặc (b) ba xu 50 cent. Nếu cả hai trường hợp thỏa mãn, máy luôn chọn phương án (a). Nếu thiếu đồng xu để trả tiền thừa, cỗ máy sẽ không bán kem. Chỗ chứa xu của máy là hữu hạn, nên ở mọi thời điểm, không được có quá MMAX xu ở mỗi mệnh giá trong máy (đồng xu vừa được đưa vào cũng được tính, nên máy không nhận một đồng xu nếu đã có đủ MMAX xu mệnh giá đó).

Có N học sinh đứng trước cỗ máy, và thầy giáo đi kèm cũng có rất nhiều đồng 50 cent, 1 USD, 2 USD. Nhiệm vụ của thầy giáo là phát cho mỗi bạn học sinh một đồng xu để mua đúng một que kem, nếu có dư tiền, học sinh sẽ trả cho thầy giáo, học sinh không trao đổi tiền với nhau. Các học sinh lần lượt mua kem theo thứ tự đứng, và học sinh nào cũng phải mua được kem.

Hãy đếm xem, thầy giáo có bao nhiêu cách phát xu? Hai cách phát được coi là khác nhau nếu tồn tại một học sinh nhận được đồng xu có mệnh giá khác nhau ở hai cách.

Dữ liệu vào

  • Dòng đầu ghi hai số nguyên N (1≤N≤300) và MMAX (1≤MMAX≤10000).
  • Dòng thứ hai ghi ba số nguyên M50, M1 và M2 (0≤M50,M1,M2≤MMAX): số lượng các xu mệnh giá 50 cent, 1 USD, 2 USD có trong máy lúc ban đầu.

Dữ liệu ra

In ra số cách phát tiền theo mod (109+9).

Ràng buộc

  • 1≤N≤300
  • 1≤MMAX≤10000
  • 0≤M50,M1,M2≤MMAX

Subtasks

  • Subtask 1 (30% số test): N≤15, MMAX≤10;
  • Subtask 2 (35% số test): 16≤N≤50;
  • Subtask 3 (35% số test): Không có giới hạn gì thêm.

Ví dụ

Input Output Giải thích
2 2
2 0 0
3 3 cách phát là: (1 USD, 50 cent), (1 USD, 1 USD), (1 USD, 2 USD). Học sinh đầu không thể trả 50 cent vì máy sẽ có 3>MMAX xu 50 cent.
4 3
0 0 0
8 8 cách phát là (đơn vị: 50 = 50 cent, 1 = 1 USD, 2 = 2 USD): 50,50,50,1; 50,50,50,2; 50,50,1,50; 50,50,1,1; 50,50,1,2; 50,1,50,50; 50,1,50,1; 50,1,50,2.
2 3
3 1 0
5 Học sinh đầu trả 1 USD (máy còn 2 xu 50 cent, 2 xu 1 USD), sau đó học sinh thứ hai có 3 lựa chọn; hoặc học sinh đầu trả 2 USD: máy thối theo phương án (a), còn 2 xu 50 cent, 0 xu 1 USD, 1 xu 2 USD, học sinh thứ hai chỉ có thể trả 50 cent hoặc 1 USD. Tổng cộng 3+2=5 cách. Nếu máy thối theo phương án (b) thì chỉ có 4 cách.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0