Bài 3: TILE (TS10 KHTN - 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn cần lát đầy dải ô vuông kích thước \(1 \times N\) bằng các viên gạch có độ dài \(1, 2,\) hoặc \(3\).

  • Gạch có độ dài \(1\)\(a\) màu khác nhau.
  • Gạch có độ dài \(2\)\(b\) màu khác nhau.
  • Gạch có độ dài \(3\)\(c\) màu khác nhau.

Hai cách lát được coi là khác nhau nếu tồn tại ít nhất một ô vuông kích thước \(1 \times 1\) mà viên gạch phủ trên đó khác nhau về độ dài hoặc màu sắc.

Hãy đếm số cách lát đầy dải \(1 \times N\), kết quả lấy dư cho \(998244853\).

Input

  • Dòng duy nhất chứa bốn số nguyên dương \(N, a, b, c\) (\(1 \le N \le 10^6, 1 \le a, b, c \le 10^9\)).

Output

  • In ra một số nguyên duy nhất là số cách lát dải, lấy dư cho \(998244853\).

Constraints

  • \(50\%\) số test có ràng buộc bổ sung: \(N \le 10^3\).
  • \(50\%\) số test còn lại không có ràng buộc bổ sung.

Example

Test 1

Input
3 2 1 1
Output
13
Note

Với \(N=3, a=2, b=1, c=1\):

  • Ba gạch độ dài \(1\): \(2^3 = 8\) cách.
  • Gạch độ dài \(1\) + gạch độ dài \(2\): \(2 \cdot 1 = 2\) cách.
  • Gạch độ dài \(2\) + gạch độ dài \(1\): \(1 \cdot 2 = 2\) cách.
  • Một gạch độ dài \(3\): \(1\) cách.
  • Tổng cộng: \(8 + 2 + 2 + 1 = 13\) cách.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: