難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) Lv.5.0 (2票)

投票の分布
  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.52票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

XOR Divisor Sugoroku

作成者 yuki4869

難易度(作成者設定) Lv.5

難易度(投票) Lv.5.0 (2票)

実行時間制限
3 秒
メモリ制限
512 MiB

問題文

11 以上 NN 以下の整数 ii それぞれに、整数 AiA_i が書かれています。

あなたは以下の QQ 個のクエリを処理してください。

各クエリでは、整数 X,YX,Y が与えられます。

はじめ、あなたは整数 XX にいます。

現在いる整数を xx とするとき、x>1x>1 である限り、次の操作を好きな回数行うことができます。

  • xx の 自身を除いた正の約数 dd をひとつ選び、整数 dd へ移動する。

この操作を繰り返し、最終的に整数 11 へ到達するような移動によって訪れた整数列を

x=(x0=X,x1,…,xk=1)x = (x_0 = X,x_1,\ldots,x_k=1)

とします。

このとき、この移動方法の スコア を

Y⊕Ax0⊕Ax1⊕⋯⊕AxkY\oplus A_{x_0}\oplus A_{x_1}\oplus\cdots\oplus A_{x_k}

と定めます。

ここで ⊕\oplus はビット単位 XOR を表します。

整数 11 へ到達する移動方法すべてのうち、スコアの最小値を求めてください。


制約

  • 1≤N≤2×1041\le N\le 2\times 10^4
  • 1≤Q≤2×1051\le Q\le 2\times 10^5
  • 0≤Ai<640\le A_i<64
  • 1≤X≤N1\le X\le N
  • 0≤Y<640\le Y<64
  • 入力される値はすべて整数

入力

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

N  QA1  A2 … ANX1  Y1X2  Y2⋮XQ  YQN\ \ Q\\ A_1\ \ A_2\ \ldots \ A_N\\ X_1\ \ Y_1 \\ X_2\ \ Y_2\\ \vdots\\ X_Q\ \ Y_Q

出力

QQ 行出力してください。

ii 行目には、ii 番目のクエリにおけるスコアの最小値を出力してください。


入力例

6 3
1 2 3 4 5 6
6 0
6 7
4 3

出力例

4
0
4

説明

1 個目のクエリ

X=6,Y=0X=6,Y=0 です。

この場合の移動方法は 33 通り考えられます。

6→1 6\to1 と移動すると、スコアは

0⊕A6⊕A1=0⊕6⊕1=70\oplus A_6\oplus A_1 = 0\oplus6\oplus1 = 7

です。

6→2→1 6\to2\to1 と移動すると、

0⊕A6⊕A2⊕A1=0⊕6⊕2⊕1=50\oplus A_6\oplus A_2\oplus A_1 = 0\oplus6\oplus2\oplus1 = 5

です。

6→3→1 6\to3\to1 と移動すると、

0⊕A6⊕A3⊕A1=0⊕6⊕3⊕1=40\oplus A_6\oplus A_3\oplus A_1 = 0\oplus6\oplus3\oplus1 = 4

です。

したがって、スコアの最小値は 44 です。


2 個目のクエリ

X=6,Y=7X=6,Y=7 です。 6→1 6\to1 と移動すると、スコアは

7⊕6⊕1=07\oplus6\oplus1=0

となります。

スコアは非負整数なので、これより小さくすることはできません。したがって答えは 00 です。