Function Composition

2 secs 1024 MB
RedSpica's icon RedSpica

問題文

「何度も何度も何度も何度も何度も何度も夏を超えたから...」

正整数a,b,ca,b,cが与えられます. また,関数fff:ZZ,f(x)=ax2+bx+c,xZf: \Z \to \Z, f(x)=ax^{2}+bx+c, x \in \Zで定義します(Z\Zは整数全体の集合を表します).

以下の問いにQQ回答えてください. 問iiの形式は以下の通りです.

  • i:i: 非負整数ni,xin_i, x_iが与えられます.f(ni)(xi)f^{(n_i)}(x_i)を求めてください. ここで,f(n)f^{(n)}は関数ffnn回合成したものを表します.

12/29 22:11追記
この問題では関数の合成回数をf(0)(x)=f(x),f(1)(x)=f(f(x)),f(2)(x)=f(f(f(x)))f^{(0)}(x)=f(x),f^{(1)}(x)=f(f(x)),f^{(2)}(x)=f(f(f(x)))のように定義します. 詳しくは入出力例を参考にしてください.

答えは非常に大きくなることがあるので,(105+3)(10^5+3)で割った余りを出力してください.

制約

  • 1a,b,c1091 \leq a,b,c \leq 10^9
  • 1Q1051 \leq Q \leq 10^5
  • 0ni,xi1090 \leq n_i,x_i \leq 10^9
  • 入力される値はすべて整数である

入力

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

aabbcc
QQ
n1n_1x1x_1
n2n_2x2x_2
\vdots
nQn_QxQx_Q

出力

答えをQQ行に出力せよ.ii行目には問iiの答えを(105+3)(10^5+3)で割った余りを出力せよ.

サンプル

入力1
1 2 3
4
0 1
1 1
2 1
3 1
出力1
6
51
2706
27632

この問題ではf(x)=x2+2x+3f(x)=x^2 + 2x +3です.よって各問の答えは

  • f(0)(1)=f(1)=12+2×1+3=6f^{(0)}(1) = f(1) = 1^2 + 2 \times 1 + 3 = 6
  • f(1)(1)=f(f(1))=62+2×6+3=51 f^{(1)}(1) = f(f(1)) = 6^2 + 2 \times 6 + 3 = 51
  • f(2)(1)=f(f(f(1)))=512+2×51+3=2706 f^{(2)}(1) = f(f(f(1))) = 51^2 + 2 \times 51 + 3 = 2706
  • f(3)(1)=f(f(f(f(1))))=27062+2×2706+3=7327851 f^{(3)}(1) = f(f(f(f(1)))) = 2706^2 + 2 \times 2706 + 3 = 7327851

となるため,それを(105+3)(10^5+3)で割った余りである数値をそれぞれ出力します.

Submit


Go (1.21)