#P5702. 调和级数求和

    ID: 5062 Type: RemoteJudge 8000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>数学倍增O2优化快速傅里叶变换 FFT

调和级数求和

题目描述

给定 n,pn,p,求:

i=1n1i\sum_{i=1}^n \frac 1i

pp 取模的值。

如果你不知道怎么对分数取模,可以看这题
保证答案在模 pp 意义下存在。

为了方便你的计算,这里将给出 pp 的最小原根 gg

输入格式

输入第一行一个正整数 TT,表示数据组数。
接下来 TT 行,每行三个正整数 n,p,gn,p,g

输出格式

输出 TT 行,每行一个整数表示答案。

5
998007 998244353 3
19260817 998244353 3
274829164 998244353 3
792846153 998244353 3
1924762 899678209 7
429767635
632288905
445668022
128133635
3097708

提示

【数据范围】
对于 30%30\% 的数据,1n1061\le n \le 10^6
对于 100%100\% 的数据,1n<p<2301 \le n < p < 2^{30}1T201\le T \le 20
保证 pp 为质数,且 p1p-1 可以被 2192^{19} 整除。

注:时限为 std 的三倍,如果过不去请确认时间复杂度正确,并优化常数。