atcoder#ABC156F. [ABC156F] Modularness

[ABC156F] Modularness

题目描述

長さ k k の数列 d0,d1,...,dk  1 d_0,d_1,...,d_{k\ -\ 1} があります。

以下のクエリ q q 個を順に処理してください。

  • i i 番目のクエリは 3 3 つの整数 ni,xi,mi n_i,x_i,m_i からなる。 長さ ni n_i の数列 a0,a1,...,ani  1 a_0,a_1,...,a_{n_i\ -\ 1} を、 \[ \begin{aligned} a_j = \begin{cases} x_i & ( j = 0 ) \\ a_{j - 1} + d_{(j - 1)~\textrm{mod}~k} & ( 0 < j \leq n_i - 1 ) \end{cases}\end{aligned} \] と定める。 $ (a_j~\textrm{mod}~m_i)\ <\ (a_{j\ +\ 1}~\textrm{mod}~m_i) $ であるような、j (0  j < ni  1) j~(0\ \leq\ j\ <\ n_i\ -\ 1) の個数を出力する。

ここで 2 2 つの整数 y, z (z > 0) y,\ z~(z\ >\ 0) について、(y mod z) (y~\textrm{mod}~z) y y z z で割った余りを表します。

输入格式

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

k k q q d0 d_0 d1 d_1 ... ... dk  1 d_{k\ -\ 1} n1 n_1 x1 x_1 m1 m_1 n2 n_2 x2 x_2 m2 m_2 : : nq n_q xq x_q mq m_q

输出格式

q q 行出力せよ。

i i 行目には、i i 番目のクエリに対する答えを出力せよ。

题目大意

有一个长度为 kk 的序列 d0,d1,,dk1d_0,d_1,\ldots,d_{k-1}

qq 组询问,每组询问给出三个数 n,x,mn,x, m, 同时定义长度为 nn 的序列a0,a1,,an1a_0,a_1,\ldots,a_{n-1},其中:

$$a_j= \begin{cases} x& j=0 \\ a_{j-1}+d_{(j-1)\mod k}&0<j\leq n-1 \end{cases} $$

对于每组询问,请回答有多少个 jj 满足 0j<n10\leq j< n-1(ajmodm)<(aj+1modm)(a_j\mod m)<(a_{j+1}\mod m)

数据范围:$1\leq k,q\leq 5000,0\leq d_i,x\leq 10^9,2\leq n,m\leq 10^9$,所有的数均为整数。

3 1
3 1 4
5 3 2
1
7 3
27 18 28 18 28 46 1000000000
1000000000 1 7
1000000000 2 10
1000000000 3 12
224489796
214285714
559523809

提示

制約

  • 入力は全て整数である。
  • 1  k, q  5000 1\ \leq\ k,\ q\ \leq\ 5000
  • 0  di  109 0\ \leq\ d_i\ \leq\ 10^9
  • 2  ni  109 2\ \leq\ n_i\ \leq\ 10^9
  • 0  xi  109 0\ \leq\ x_i\ \leq\ 10^9
  • 2  mi  109 2\ \leq\ m_i\ \leq\ 10^9

Sample Explanation 1

1 1 つ目のクエリについて、問題文で示した数列 {aj a_j } は 3,6,7,11,14 3,6,7,11,14 になります。 - (a0 mod 2) > (a1 mod 2) (a_0~\textrm{mod}~2)\ >\ (a_1~\textrm{mod}~2) - (a1 mod 2) < (a2 mod 2) (a_1~\textrm{mod}~2)\ <\ (a_2~\textrm{mod}~2) - (a2 mod 2) = (a3 mod 2) (a_2~\textrm{mod}~2)\ =\ (a_3~\textrm{mod}~2) - (a3 mod 2) > (a4 mod 2) (a_3~\textrm{mod}~2)\ >\ (a_4~\textrm{mod}~2) であるため、このクエリに対する答えは 1 1 です。