luogu#P11175. 【模板】基于值域预处理的快速离散对数

【模板】基于值域预处理的快速离散对数

题目背景

模板题,无背景。

题目描述

给定质数 PP 以及它的一个原根 gg

qq 组询问,每组询问给出整数 yy,你需要找到最小的非负整数 xx 使得 gxy(modP)g^x\equiv y\pmod P

输入格式

第一行两个整数 P,gP,g,描述质数 PP 及其一个原根 gg

第二行一个整数 qq,表示询问次数。

接下来 qq 行,每行一个整数 yy,表示每次询问的值。

输出格式

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

998244353 3
9
1
11
111
1111
11111
111111
1111111
11111111
111111111
0
258630203
771331691
346105458
268271589
571255383
916731589
304666893
915484870
1000000007 5
13
1
5
25
125
625
3125
15625
78125
390625
1953125
9765625
48828125
244140625
0
1
2
3
4
5
6
7
8
9
10
11
12

提示

数据范围及约束

  • 对于前 15%15\% 的数据,满足 1g<P1001\le g < P\le 1001q1001\le q\le 100
  • 对于前 30%30\% 的数据,满足 1g<P109+71\le g < P\le 10^9+71q1001\le q\le 100
  • 另有 15%15\% 的数据,满足 yi=iy_i=i
  • 另有 15%15\% 的数据,满足 P=998244353P=998244353g=3g=3
  • 对于全部数据,满足 1g,yi<P109+71\le g,y_i<P\le 10^9+71q5×1051\le q\le 5\times 10^5

请注意读入效率对程序运行速度的影响。