AT_agc019_e.[AGC019E] Shuffle and Swap

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有两个长度相同、仅由 00 和 11 组成的字符串 A=A1A2…AnA = A_1A_2\ldots A_n 和 B=B1B2…BnB = B_1B_2\ldots B_n。AA 和 BB 中 11 的个数是相等的。

你决定通过如下的算法改变 AA:

  • 令 a1,a2,…,aka_1, a_2, \ldots, a_k 为 AA 中所有 11 出现的位置的下标。
  • 令 b1,b2,…,bkb_1, b_2, \ldots, b_k 为 BB 中所有 11 出现的位置的下标。
  • 将 aa 和 bb 的元素分别独立地均匀随机排列。
  • 然后对于每个 ii(1≤i≤k1 \leq i \leq k),依次交换 AaiA_{a_i} 和 AbiA_{b_i} 的值。

完成上述步骤后,设 AA 和 BB 完全相等的概率为 PP。

进一步定义 Z=P×(k!)2Z = P \times (k!)^2。显然,ZZ 是整数。

请输出 ZZ 对 998244353998244353 取余的结果。

输入格式

输入为一行,包括两个字符串 AA 和 BB。

输出格式

输出 ZZ 对 998244353998244353 取余的结果。

输入输出样例

  • 输入#1

    1010
    1100

    输出#1

    3
  • 输入#2

    01001
    01001

    输出#2

    4
  • 输入#3

    101010
    010101

    输出#3

    36
  • 输入#4

    1101011011110
    0111101011101

    输出#4

    932171449

说明/提示

限制

  • 1≤∣A∣=∣B∣≤10 0001 \leq |A| = |B| \leq 10\,000
  • AA 和 BB 仅包含 00 和 11
  • AA 和 BB 中的 11 的数量相等,且至少有一个 11

部分分

  • 若能通过 1≤∣A∣=∣B∣≤5001 \leq |A| = |B| \leq 500 数据集,将获得 12001200 分。

样例解释 1

最初的两步后,a=[1,3]a = [1, 3],b=[1,2]b = [1, 2]。将 aa 和 bb 随机排列后,可能的四种组合如下:

  • a=[1,3],b=[1,2]a = [1, 3], b = [1, 2]。初始 A=1010A = 1010。交换 A1A_1 和 A1A_1 后 A=1010A = 1010。交换 A3A_3 和 A2A_2 后 A=1100A = 1100。
  • a=[1,3],b=[2,1]a = [1, 3], b = [2, 1]。初始 A=1010A = 1010。交换 A1A_1 和 A2A_2 后 A=0110A = 0110。交换 A3A_3 和 A1A_1 后 A=1100A = 1100。
  • a=[3,1],b=[1,2]a = [3, 1], b = [1, 2]。初始 A=1010A = 1010。交换 A3A_3 和 A1A_1 后 A=1010A = 1010。交换 A1A_1 和 A2A_2 后 A=0110A = 0110。
  • a=[3,1],b=[2,1]a = [3, 1], b = [2, 1]。初始 A=1010A = 1010。交换 A3A_3 和 A2A_2 后 A=1100A = 1100。交换 A1A_1 和 A1A_1 后 A=1100A = 1100。

在上述四种结果中,有三种 A=BA = B,因此 P=3/4P = 3/4,Z=3Z = 3。

样例解释 2

通过 AA 的元素交换,AA 始终不会改变,所以总有 A=BA = B。

样例解释 3

无论三次 AA 的元素交换如何发生,AA 中的 11 总会正确到达目标位置。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页