問題一覧 > 教育的問題

No.2273 一点乗除区間積

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 12
作問者 : 👑 p-adic / テスター : ecottea
0 ProblemId : 9078 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-04-11 23:31:47

注意

この問題の実行時間制限は5000[ms]です。

 

問題文

入力に 33 個の正整数 N,B,QN, B, Q と、長さ NN の非負整数列 AAQQ 個のクエリ(後述) が与えられます。

 

まずは記法の導入です。非負整数列 aa とその長さ未満の非負整数 ii に対し、aia_iaa1+i1+i 個目の成分を表します。

更に r\ell \leq r を満たす aa の長さ未満の 22 個の非負整数 ,r\ell, rに対し、

(i=rai)modB\displaystyle \left( \prod_{i = \ell}^{r} a_i \right) \bmod B

PB(a,,r)P_B(a,\ell,r) と置きます。

また非負整数 k,mk,m に対し、非負整数 RB(k,m)R_B(k,m) を以下のように定めます:

  • kkBB の倍数でありかつ m=Bm = B ならば、RB(k,m)=B1kR_B(k,m) = B^{-1} k である。
  • そうでないならば、RB(k,m)=mkR_B(k,m) = m k である。

 

それでは本題に移ります。各クエリは、j<Nj < Nr<N\ell \leq r < N を満たす 44 個の非負整数 j,m,,rj,m,\ell, r の組 (j,m,,r)(j,m,\ell,r) です。

クエリ (j,m,,r)(j,m,\ell,r) は以下のように処理します:

  1. まず AA1+j1+j 個目の成分の値を AjA_j から RB(Aj,m)R_B(A_j,m) に置き換えることで AA を更新する。
  2. 次に更新された AA に対する PB(A,,r)P_B(A,\ell,r) を求める。(以下この値を、そのクエリへの回答と呼ぶ)

QQ 個のクエリを与えられた順に全て処理してください。

入力

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

  • 11 行目に N,B,QN, B, Q が半角空白区切り与えられます。
  • 22 行目に AA の各成分が半角空白区切りで与えられます。
  • QQ 以下の各正整数 qq に対し、2+q2 + q 行目に qq 個目のクエリ (j,m,,r)(j,m,\ell,r) の各成分が半角空白区切りで与えられます。

制約

入力は以下の制約を満たします:

  • NN1N1051 \leq N \leq 10^5 を満たす整数
  • BB1B1091 \leq B \leq 10^9 を満たす整数
  • QQ1Q1051 \leq Q \leq 10^5 を満たす整数
  • NN 未満の任意の非負整数 ii に対し、AiA_i0Ai10180 \leq A_i \leq 10^{18} を満たす整数
  • 全てのクエリ (j,m,,r)(j,m,\ell,r) が以下を満たす:
    • jj0j<N0 \leq j < N を満たす整数
    • mm0m10180 \leq m \leq 10^{18} を満たす整数
    • \ellrr0r<N0 \leq \ell \leq r < N を満たす整数

出力

QQ 以下の各正整数 qq に対し、qq 行目に qq 個目のクエリへの回答を出力してください。

最後に改行してください。

サンプル

サンプル1
入力
1 2 1
1
0 3 0 0
出力
1

クエリ (j,m,,r)=(0,3,0,0)(j,m,\ell,r) = (0,3,0,0) を処理します。A=(1)A = (1)

(RB(A0,m))=(R2(1,3))=(3×1)=(3)\displaystyle (R_B(A_0,m)) = (R_2(1,3)) = (3 \times 1) = (3)

に更新され、更新後の AA に対し

PB(A,,r)=P2(A,0,0)=(i=00Ai)mod2=3mod2=1\displaystyle P_B(A,\ell,r) = P_2(A,0,0) = \left( \prod_{i = 0}^{0} A_i \right) \bmod 2 = 3 \bmod 2 = 1

となるので、このクエリへの回答は 11 です。今回は Q=1Q = 1 であるので、これで全ての処理が終了します。

サンプル2
入力
2 3 1
1 2
0 2 0 1
出力
1

クエリ (j,m,,r)=(0,2,0,1)(j,m,\ell,r) = (0,2,0,1) を処理します。A=(1,2)A = (1,2)

(RB(A0,m),A1)=(R3(1,2),2)=(2×1,2)=(2,2)\displaystyle (R_B(A_0,m),A_1) = (R_3(1,2),2) = (2 \times 1,2) = (2,2)

に更新され、更新後の AA に対し

PB(A,,r)=P3(A,0,1)=(i=01Ai)mod3=(2×2)mod3=4mod3=1\displaystyle P_B(A,\ell,r) = P_3(A,0,1) = \left( \prod_{i = 0}^{1} A_i \right) \bmod 3 = (2 \times 2) \bmod 3 = 4 \bmod 3 = 1

となるので、このクエリへの回答は 11 です。今回は Q=1Q = 1 であるので、これで全ての処理が終了します。

サンプル3
入力
2 3 2
6 2
1 2 0 1
0 3 0 0
出力
0
2

まず 11 個目のクエリ (j,m,,r)=(1,2,0,1)(j,m,\ell,r) = (1,2,0,1) を処理します。A=(6,2)A = (6,2)

(A0,RB(A1,m))=(6,R3(2,2))=(6,2×2)=(6,4)\displaystyle (A_0,R_B(A_1,m)) = (6,R_3(2,2)) = (6,2 \times 2) = (6,4)

に更新され、更新後の AA に対し

PB(A,,r)=P3(A,0,1)=(i=01Ai)mod3=(6×4)mod3=24mod3=0\displaystyle P_B(A,\ell,r) = P_3(A,0,1) = \left( \prod_{i = 0}^{1} A_i \right) \bmod 3 = (6 \times 4) \bmod 3 = 24 \bmod 3 = 0

となるので、このクエリへの回答は 00 です。

引き続き 22 個目のクエリ (j,m,,r)=(0,3,0,0)(j,m,\ell,r) = (0,3,0,0) を処理します。A=(6,4)A = (6,4)

(RB(A0,m),A1)=(R3(6,3),4)=(31×6,4)=(2,4)\displaystyle (R_B(A_0,m),A_1) = (R_3(6,3),4) = (3^{-1} \times 6,4) = (2,4)

に更新され、更新後の AA に対し

PB(A,,r)=P3(A,0,0)=(i=00Ai)mod3=2mod3=2\displaystyle P_B(A,\ell,r) = P_3(A,0,0) = \left( \prod_{i = 0}^{0} A_i \right) \bmod 3 = 2 \bmod 3 = 2

となるので、このクエリへの回答は 22 です。今回は Q=2Q = 2 であるので、これで全ての処理が終了します。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。