atcoder#ARC158F. [ARC158F] Random Radix Sort

[ARC158F] Random Radix Sort

配点 : 900900

問題文

非負整数 x,kx, k に対して,xx10k10^k の位とは,x10k\bigl\lfloor \frac{x}{10^k}\bigr\rfloor1010 で割った余りのことをいいます.例えば 12312310010^0, 10110^1, 10210^2, 10310^3 の位はそれぞれ 3,2,1,03, 2, 1, 0 です.

正整数 N,M,KN, M, K および非負整数列 A=(A1,,AN)A = (A_1, \ldots, A_N), B=(B1,,BN)B = (B_1, \ldots, B_N) が与えられます.

次の手順によって AA を並べ替えることを考えます.

  • 次を MM 回行う:- 0kK10\leq k \leq K - 1 となる整数 kk をひとつ選ぶ.
    • その後,AA10k10^k の位に関して安定ソートする.つまり,d=0,1,,9d=0,1,\ldots,9 に対して,AA の部分列 A(d)A^{(d)}AA の要素のうち 10k10^k の位が dd であるようなもの全体として定め,A(0),A(1),,A(9)A^{(0)}, A^{(1)}, \ldots, A^{(9)} をこの順に連結してできる列で AA を置き換える.
  • 0kK10\leq k \leq K - 1 となる整数 kk をひとつ選ぶ.
  • その後,AA10k10^k の位に関して安定ソートする.つまり,d=0,1,,9d=0,1,\ldots,9 に対して,AA の部分列 A(d)A^{(d)}AA の要素のうち 10k10^k の位が dd であるようなもの全体として定め,A(0),A(1),,A(9)A^{(0)}, A^{(1)}, \ldots, A^{(9)} をこの順に連結してできる列で AA を置き換える.

このような手順は KMK^M 通りありますが,その結果 AABB に等しくなるものの個数を 998244353998244353 で割った余りを求めてください.

制約

  • 1N2×1051\leq N\leq 2\times 10^5
  • 1M1091\leq M\leq 10^9
  • 1K181\leq K\leq 18
  • 0Ai<10K0\leq A_i < 10^K
  • 0Bi<10K0\leq B_i < 10^K
  • AABB は多重集合として一致する.つまり任意の整数 xx に対して,xxAA に現れる回数は xxBB に現れる回数と一致する.

入力

入力は以下の形式で標準入力から与えられます.

NN MM KK

A1A_1 \ldots ANA_N

B1B_1 \ldots BNB_N

出力

AABB に等しくなるような手順の個数を 998244353998244353 で割った余りを出力してください.

3 2 3
74 42 54
42 54 74
5

11 回目に選ぶ kkk1k_122 回目に選ぶ kkk2k_2 とします.例えば k1=0,k2=1k_1 = 0, k_2 = 1 のとき AA は次のように変化します.

  • 10k1=10010^{k_1} = 10^0 の位に関する安定ソートにより,AA(42,74,54)(42,74,54) になる.
  • 10k2=10110^{k_2} = 10^1 の位に関する安定ソートにより,AA(42,54,74)(42,54,74) になる.

すべての手順および,その結果の AA は以下の通りです:

  • (k1,k2)=(0,0)(k_1, k_2) = (0,0)A=(42,74,54)A = (42,74,54)
  • (k1,k2)=(0,1)(k_1, k_2) = (0,1)A=(42,54,74)A = (42,54,74)
  • (k1,k2)=(0,2)(k_1, k_2) = (0,2)A=(42,74,54)A = (42,74,54)
  • (k1,k2)=(1,0)(k_1, k_2) = (1,0)A=(42,54,74)A = (42,54,74)
  • (k1,k2)=(1,1)(k_1, k_2) = (1,1)A=(42,54,74)A = (42,54,74)
  • (k1,k2)=(1,2)(k_1, k_2) = (1,2)A=(42,54,74)A = (42,54,74)
  • (k1,k2)=(2,0)(k_1, k_2) = (2,0)A=(42,74,54)A = (42,74,54)
  • (k1,k2)=(2,1)(k_1, k_2) = (2,1)A=(42,54,74)A = (42,54,74)
  • (k1,k2)=(2,2)(k_1, k_2) = (2,2)A=(74,42,54)A = (74,42,54)
2 1 1
2 3
3 2
0

条件を満たす手順は存在しません.

5 100 4
0 12 34 56 78
0 12 34 56 78
982924732

41004^{100} 通りの手順すべてが条件を満たします.