QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 1024 MB

#23597. Kata Pertama

Statistiques

VegiCat memiliki sebuah string $S$ yang terdiri dari $n$ huruf kecil bahasa Inggris. Ia ingin membangun sebuah kamus yang berisi $k$ substring tak kosong yang berbeda dari $S$ sebagai kata-katanya. Substring adalah bagian berurutan yang kontigu dari sebuah string. Substring dengan isi yang sama dianggap sebagai kata yang sama, meskipun muncul pada posisi yang berbeda di dalam $S$.

problem_23597_b7c3639e439584b24d8e3cd0c7e7774e.png

Misalkan $\pi$ adalah pemetaan dari huruf-huruf $\texttt{a}, \texttt{b}, \ldots, \texttt{z}$ ke huruf-huruf yang bersesuaian dalam suatu permutasi dari $26$ huruf kecil bahasa Inggris. Sebagai contoh, permutasi $\texttt{qwertyuiopasdfghjklzxcvbnm}$ mendefinisikan pemetaan berikut:

$$ \begin{array}{c|cccccccccccccccccccccccccc} c & \texttt{a} & \texttt{b} & \texttt{c} & \texttt{d} & \texttt{e} & \texttt{f} & \texttt{g} & \texttt{h} & \texttt{i} & \texttt{j} & \texttt{k} & \texttt{l} & \texttt{m} & \texttt{n} & \texttt{o} & \texttt{p} & \texttt{q} & \texttt{r} & \texttt{s} & \texttt{t} & \texttt{u} & \texttt{v} & \texttt{w} & \texttt{x} & \texttt{y} & \texttt{z} \\ \hline \pi(c) & \texttt{q} & \texttt{w} & \texttt{e} & \texttt{r} & \texttt{t} & \texttt{y} & \texttt{u} & \texttt{i} & \texttt{o} & \texttt{p} & \texttt{a} & \texttt{s} & \texttt{d} & \texttt{f} & \texttt{g} & \texttt{h} & \texttt{j} & \texttt{k} & \texttt{l} & \texttt{z} & \texttt{x} & \texttt{c} & \texttt{v} & \texttt{b} & \texttt{n} & \texttt{m} \end{array} $$

Untuk sebuah string $u = u_1 u_2 \cdots u_m$, definisikan

$$ \pi(u) = \pi(u_1)\pi(u_2) \cdots \pi(u_m). $$

Sebagai contoh, dengan pemetaan di atas, $\pi(\texttt{apple}) = \texttt{qhhst}$.

VegiCat menginginkan kamus tersebut memuat sebuah kata $w$ sedemikian sehingga setelah menerapkan pemetaan $\pi$ apa pun seperti itu pada setiap kata di dalam kamus, $\pi(w)$ selalu menjadi kata terkecil secara leksikografis dalam kamus yang dihasilkan.

Untuk setiap $k = 1, 2, \ldots, n$, carilah banyaknya kamus yang memuat $k$ kata berbeda dan memenuhi syarat tersebut, modulo $998\,244\,353$. Dua kamus dianggap berbeda jika dan hanya jika keduanya memuat himpunan kata yang berbeda sebelum pemetaan apa pun diterapkan.

Ingat kembali bahwa string $a$ lebih kecil secara leksikografis daripada string $b$ jika $a$ adalah prefiks dari $b$ (dan $a \neq b$), atau terdapat suatu indeks $i$ ($1 \le i \le \min(|a|, |b|)$) sehingga $a_i < b_i$, dan untuk setiap indeks $j$ ($1 \le j < i$) berlaku $a_j = b_j$.

Masukan

Baris pertama berisi sebuah bilangan bulat $T$ ($1 \le T \le 10^4$), banyaknya kasus uji. Deskripsi dari masing-masing kasus uji menyusul.

Baris pertama dari setiap kasus uji berisi sebuah bilangan bulat $n$ ($1 \le n \le 10^5$).

Baris kedua berisi sebuah string $S$ dengan panjang $n$, yang hanya terdiri dari huruf kecil bahasa Inggris.

Dijamin bahwa jumlah $n$ di semua kasus uji tidak melebihi $10^5$.

Keluaran

Untuk setiap kasus uji, keluarkan $n$ bilangan bulat dalam satu baris. Bilangan bulat ke-$k$ menyatakan banyaknya kamus yang memuat $k$ kata berbeda dan memenuhi syarat, modulo $998\,244\,353$.

Examples

Input 1

3
3
aab
4
ppqq
7
abcaabc

Output 1

5 4 3
8 10 11 10
21 52 87 119 139 128 84

Catatan

Setiap kamus di bawah ini ditulis sebagai himpunan kata.

Untuk kasus uji pertama, $S = \texttt{aab}$, kamus-kamus yang memenuhi syarat untuk $k = 1, 2, 3$ adalah:

$k$ Himpunan kata yang memenuhi syarat Banyaknya kamus
$1$ $\{\texttt{a}\,\},\ \{\texttt{b}\,\},\ \{\texttt{aa}\,\},\ \{\texttt{ab}\,\},\ \{\texttt{aab}\,\}$ $5$
$2$ $\{\texttt{a}, \texttt{aa}\,\},\ \{\texttt{a}, \texttt{ab}\,\},\ \{\texttt{a}, \texttt{aab}\,\},\ \{\texttt{aa}, \texttt{aab}\,\}$ $4$
$3$ $\{\texttt{a}, \texttt{aa}, \texttt{ab}\,\},\ \{\texttt{a}, \texttt{aa}, \texttt{aab}\,\},\ \{\texttt{a}, \texttt{ab}, \texttt{aab}\,\}$ $3$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#3182EditorialOpenNew Editorial for Problem #23597ucup-team9445View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.