이 대회에 원이 등장할 수 없는 이유는?

시간 제한0.8초메모리 제한1024 MB

요약
N비트 문자열 위의 불리언 함수 f와 순열들이 주어질 때, 비트 순열과 XOR로 이루어진 사상의 k제곱이 f를 보존하게 하는 N비트 마스크 v의 개수를 998244353으로 나눈 나머지를 구한다.
난이도

어려움10점 중 10점

유형
수학, 조합론, 비트 연산, 정수론
정답자
아직 제출이 없습니다

문제

파이널대회여서

이번에는 하늘이가 무려 MatKor Cup에 참가한다. 또다시 하늘이가 MatKor에 진심인 모습에 감격한 세준이는 하늘이를 위해 새로운 문제를 만들어 이진 원정대를 결성하려 했다. 하지만 원이 등장할 수 없기 때문에 이진 정대 톡방을 만들어 아래 문제를 풀기로 했다.

실제 만들어진 이진 정대 톡방이다.

먼저 임의의 NN비트 정수 xx에 대해 적용되는 몇 가지 연산을 아래와 같이 정의하자.

  1. 임의의 길이 NN의 순열* \sigma =\left\\{ \sigma\_i \right\\}에 대해, NN비트 정수 σx\sigma x는 ii번째 비트가 xx의 σ_i\sigma\_i번째 비트와 같도록 정의한다.
  2. 임의의 NN비트 정수 vv에 대해, x⊕vx\oplus v는 xx와 vv 간의 bitwise XOR 연산이다.

예를 들어 x=1001_(2)x=1001\_{\left( 2 \right)}이고 σ=(1,3,4,2)\sigma =\left( 1,3,4,2 \right)라면, σx=0101_(2)\sigma x=0101\_{\left( 2 \right)}이다. 여기서 σx\sigma x의 11번째 비트가 00이 아니라 11임에 유의하라. 정수 xx의 ii번째 비트의 값은 ⌊x2i−1⌋ mod 2\left\lfloor \frac{x}{2^{i-1}} \right\rfloor \bmod 2이다.

위의 정의를 따르는 임의의 σ,v\sigma ,v에 대해, 두 연산을 묶어 아래와 같은 함수 g_σ,vg\_{\sigma ,v}를 정의하자.

\[g_{\sigma ,v}=\left( \sigma x \right)\oplus v\]

당신은 함수 ff를 알고 있다. ff는 NN비트 정수 하나를 입력받아 00 또는 11을 출력하는 함수이다. 만약 NN비트 정수를 입력받아 NN비트 정수를 출력하는 임의의 함수 hh에 대해, 어떤 NN비트 정수 xx에 대해서도 (f∘h)(x)=f(x)\left( f\circ h \right)\left( x \right) =f\left( x \right)라면, 이러한 hh를 ff에 의해 무효화된다고 한다.

당신은 다음 조건이 성립하도록 길이가 MM인 목록 H=\left\[ \left( \sigma^1,v\_1 \right) ,\left( \sigma^2,v\_2 \right) ,\cdots ,\left( \sigma^M,v\_M \right) \right]를 구성했다.

  1. σ1,⋯ ,σM\sigma^1,\cdots ,\sigma^M는 모두 길이 NN의 순열이다.
  2. v_1,⋯ ,v_Mv\_1,\cdots ,v\_M은 모두 NN비트 정수이다.
  3. 모든 g_σ1,v_1,⋯ ,g_σM,v_Mg\_{\sigma^1,v\_1},\cdots ,g\_{\sigma^M,v\_M}는 ff에 의해 무효화된다.
  4. ff에 의해 무효화되는 임의의 g_σ,vg\_{\sigma ,v}에 대해, 어떤 11 이상 MM 이하의 정수로 구성된 유한한 길이 ll의 수열 \left\\{ a\_i \right\\}가 존재하여 g_σ,v∘g_σa_1,v_a_1∘g_σa_2,v_a_2∘⋯∘g_σa_l,v_a_lg\_{\sigma ,v}\circ g\_{\sigma^{a\_1},v\_{a\_1}}\circ g\_{\sigma^{a\_2},v\_{a\_2}}\circ\cdots\circ g\_{\sigma^{a\_l},v\_{a\_l}}가 항등함수이다.

그런데 HH를 적어 둔 종이가 MatKor 출제진에 의해 의도적으로 훼손되었다. 모든 v_iv\_i 값들이 교묘하게 지워져 남은 정보는 σ1,σ2,⋯ ,σM\sigma^1,\sigma^2,\cdots ,\sigma^M 뿐이었다.

시련이 닥쳤지만 실험은 계속되어야 한다. 논문을 쓰지 못하면 졸업할 수 없기 때문이다. ff와 σ1,σ2,⋯ ,σM\sigma^1,\sigma^2,\cdots ,\sigma^M이 주어질 때, 아래 쿼리에 답해 보자.

  • k π_1 π_2 ⋯ π_Nk\ \pi\_1\ \pi\_2\ \cdots\ \pi\_N: 음이 아닌 정수 kk와 길이 NN의 순열 \left\\{ \pi\_i \right\\}에 대해, g_π,vkg\_{\pi ,v}^{k}가 ff에 의해 무효화되도록 하는 NN비트 정수 vv의 개수를 998,244,353998\\, 244\\, 353으로 나눈 나머지를 출력하라. 여기서 g_π,v0(x)=x,g_π,vn+1=g_π,vn∘g_π,vg\_{\pi ,v}^{0}\left( x \right) =x,g\_{\pi ,v}^{n+1}=g\_{\pi ,v}^{n}\circ g\_{\pi ,v}이다.

*길이 NN의 순열이란 11 이상 NN 이하의 정수가 한 개씩 포함된 길이 NN의 수열을 의미한다.

입력

첫 번째 줄에 N,M(1≤N,M≤20)N,M(1\leq N,M\leq 20)이 공백으로 구분되어 주어진다.

두 번째 줄에 길이 2N2^N의 이진 문자열이 주어진다. 문자열의 왼쪽에서부터 ii번째 원소는 f(i−1)f\left( i-1 \right)의 값을 나타내고, 양의 정수 ii의 jj번째 비트의 값은 ⌊i2j−1⌋ mod 2\left\lfloor \frac{i}{2^{j-1}} \right\rfloor\bmod 2이다.

세 번째 줄부터 MM 줄에 걸쳐 각 줄에 길이 NN의 순열 σi\sigma^i의 원소 σi_1,⋯ ,σi_N\sigma^i\_1,\cdots ,\sigma^i\_N이 순서대로 공백으로 구분되어 주어진다.

M+3M+3번째 줄에는 쿼리의 개수 Q(1≤Q≤1,000)Q(1\leq Q\leq 1\\, 000)가 주어진다.

M+4M+4번째 줄부터 QQ개의 줄에는 쿼리 k(0≤k≤1018)k(0\leq k\leq 10^{18})과 길이 NN의 순열 π\pi의 원소 π_1,⋯ ,π_N\pi\_1,\cdots ,\pi\_N이 공백으로 구분되어 주어진다.

출력

첫 번째 줄부터 QQ 줄에 걸쳐 각 쿼리마다 정답을 한 줄에 한 개씩 출력한다.

예제1

  1. 예제 1

    입력
    2 2
    0110
    1 2
    2 1
    2
    1 1 2
    2 1 2
    
    예상 출력
    2
    4