题目描述
非負整数 x, k に対して,x の 10k の位とは,⌊ 10kx⌋ を 10 で割った余りのことをいいます.例えば 123 の 100, 101, 102, 103 の位はそれぞれ 3, 2, 1, 0 です.
正整数 N, M, K および非負整数列 A = (A1, …, AN), B = (B1, …, BN) が与えられます.
次の手順によって A を並べ替えることを考えます.
- 次を M 回行う:
- 0≤ k ≤ K − 1 となる整数 k をひとつ選ぶ.
- その後,A を 10k の位に関して安定ソートする.つまり,d=0,1,…,9 に対して,A の部分列 A(d) を A の要素のうち 10k の位が d であるようなもの全体として定め,A(0), A(1), …, A(9) をこの順に連結してできる列で A を置き換える.
このような手順は KM 通りありますが,その結果 A が B に等しくなるものの個数を 998244353 で割った余りを求めてください.
输入格式
入力は以下の形式で標準入力から与えられます.
N M K A1 … AN B1 … BN
输出格式
A が B に等しくなるような手順の個数を 998244353 で割った余りを出力してください.
题目大意
给出正整数 N,M,K 和非负整数序列 A=(A1…,AN),B=(B1,…,BN) 。
对 A 进行 KM 次排序,每次可选 10 进制下从低到高第 0≤k<K 位为关键字进行稳定升序排序。
求结果 A 等于 B 的方案数,对 998244353 取模。
3 2 3
74 42 54
42 54 74
5
2 1 1
2 3
3 2
0
5 100 4
0 12 34 56 78
0 12 34 56 78
982924732
提示
制約
- 1≤ N≤ 2× 105
- 1≤ M≤ 109
- 1≤ K≤ 18
- 0≤ Ai < 10K
- 0≤ Bi < 10K
- A と B は多重集合として一致する.つまり任意の整数 x に対して,x が A に現れる回数は x が B に現れる回数と一致する.
Sample Explanation 1
1 回目に選ぶ k を k1,2 回目に選ぶ k を k2 とします.例えば k1 = 0, k2 = 1 のとき A は次のように変化します. - 10k1 = 100 の位に関する安定ソートにより,A は (42,74,54) になる. - 10k2 = 101 の位に関する安定ソートにより,A は (42,54,74) になる. すべての手順および,その結果の A は以下の通りです: - (k1, k2) = (0,0):A = (42,74,54). - (k1, k2) = (0,1):A = (42,54,74). - (k1, k2) = (0,2):A = (42,74,54). - (k1, k2) = (1,0):A = (42,54,74). - (k1, k2) = (1,1):A = (42,54,74). - (k1, k2) = (1,2):A = (42,54,74). - (k1, k2) = (2,0):A = (42,74,54). - (k1, k2) = (2,1):A = (42,54,74). - (k1, k2) = (2,2):A = (74,42,54).
Sample Explanation 2
条件を満たす手順は存在しません.
Sample Explanation 3
4100 通りの手順すべてが条件を満たします.