J - MODクエリ Editorial

Time Limit: 5 sec / Memory Limit: 256 MB

問題文

頂点数 nn の木があり,頂点 i(i=1,...,n)i (i = 1, ..., n) には正の整数 aia_i が書かれている. qq個の質問に答えよ.

各質問は3つの整数からなり, jj 番目の質問は xj,vj,wjx_j, v_j, w_j で与えられる.
木の頂点 vjv_j から wjw_j への最短のパスの頂点に書かれている数 aia_i で, xjx_j を順番に割った余りを出力せよ. 言い換えると,vjv_j から wjw_j への最短パスが p1,...,pkp_1, ..., p_k (頂点数 kk , p1=vj,pk=wjp_1 = v_j, p_k = w_j ) であるとき, ((...((xj((...((x_j % a_{p_1}) % a_{p_2}) ...) % a_{p_{k-1}} ) % a_{p_k} を出力せよ.

ただし xx % yxxyy で割った余りを取る演算とする.


入力

1行目は数列の長さ nn と質問の数 qq が与えられる. 2行目には数列 aa を表す nn 個の正整数が空白区切りで与えられる. 続く n1n-1 行の各行には木の辺の端点 bi,cib_i, c_i が空白区切りで与えられる. 続く qq 行には各質問が与えられる. 各質問は,3つの整数 xj,vj,wjx_j, v_j, w_j が空白区切りで与えられる.
nn qq
a1a_1 ... ana_n
b1b_1 c1c_1
:
bn1b_{n-1} cn1c_{n-1}
x1x_1 v1v_1 w1 w_1
:
xqx_q vqv_q wq w_q
  • 1n1000001 \leq n \leq 100000
  • 1q1000001 \leq q \leq 100000
  • 1ai1091 \leq a_i \leq 10^{9}
  • 1bi,cin1 \leq b_i, c_i \leq n
  • 0xj1090 \leq x_j \leq 10^{9}
  • 1vj,wjn1 \leq v_j, w_j \leq n
  • 入力値はすべて整数である
  • 与えられるグラフは木である

出力

出力は qq 行からなる. jj 行目には jj 個目の質問に対する答えを1つの整数で出力せよ.

部分点

以下の制約を満たすデータセットに全て正解した場合は 3030 点の部分点が与えられる.

  • 全ての ii (1in1)(1 \leq i \leq n-1) について, bi=i,ci=i+1b_i = i, c_i = i+1 ,つまりグラフはパスである
  • 全ての jj (1jq)(1 \leq j \leq q) について, vjwjv_j \leq w_j である


入力例1Copy

Copy
5 2
8 6 4 3 2
1 2
2 3
3 4
4 5
15 1 5
15 2 5

出力例1Copy

Copy
1
0
グラフはパスの構造をしている. 1個目の質問について, 1515 % 8 = 7, 7 % 6 = 1, 1 % 4 = 1, 1 % 3 = 1, 1 % 2 = 1 で,答は 11 である. 2個目の質問について, 1515 % 6 = 3, 3 % 4 = 3, 3 % 3 = 0, 0 % 2 = 0 で,答は 00 である.

入力例2Copy

Copy
8 5
18 29 52 64 4 59 89 15
1 2
1 3
1 4
2 5
3 6
3 7
4 8
99 6 7
102 5 8
15 2 6
84 7 8
19 1 1

出力例2Copy

Copy
40
2
15
14
1

Source Name

京都大学プログラミングコンテスト2015


2025-04-15 (Tue)
21:27:53 +00:00