trang chủ / bài tập / goodsubs

Đếm dãy con tốt

Đề bài

Mô tả

Một dãy số nguyên a1,a2,,ak được gọi là mảng tốt nếu a1=k1a1>0. Nói cách khác, phần tử đầu tiên dương và bằng độ dài phần còn lại của mảng. Ví dụ: [3,1,44,0][1,99] là mảng tốt; [3,7,8], [2,5,4,1], [0] thì không.

Một dãy số nguyên được gọi là dãy tốt nếu nó có thể được phân hoạch thành một hoặc nhiều mảng tốt liên tiếp nhau, sao cho mỗi mảng tốt là một đoạn con liên tiếp của dãy và mỗi phần tử của dãy thuộc đúng một mảng. Ví dụ: [2,3,0,1,4][1,2,3,3,9,4] là dãy tốt; [2,3,0,1][1,2,3,3,9,4,1] thì không.

Cho một dãy a1,a2,,an. Hãy đếm số dãy con (không nhất thiết liên tiếp) của dãy này là dãy tốt, lấy kết quả theo modulo 998244353.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n — độ dài dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

  • In ra một số nguyên duy nhất là số dãy con là dãy tốt, theo modulo 998244353.

Ràng buộc

  • 1n103
  • 109ai109

Ví dụ

Input Output Giải thích
3
2 1 1
2 Hai dãy con tốt là [a1,a2,a3]=[2,1,1] (phân hoạch thành một mảng tốt độ dài 3) và [a2,a3]=[1,1] (một mảng tốt độ dài 2).
4
1 1 1 1
7 Bảy dãy con tốt: [a1,a2,a3,a4], [a1,a2], [a1,a3], [a1,a4], [a2,a3], [a2,a4], [a3,a4].
3
2 2 1
1 Chỉ có [a1,a2,a3]=[2,2,1] là dãy tốt: a1=2 ⇒ mảng tốt đầu có 3 phần tử là chính nó.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0