#P2417. Discrete Logging

    ID: 1418 传统题 1000ms 256MiB 尝试: 2 已通过: 2 难度: 10 上传者: 标签>数论baby-step-giant-stepWaterloo Local 2002.01.26

Discrete Logging

题目描述

给定一个素数 PP,满足 2P<2312 \leq P < 2^{31},一个整数 BB,满足 2B<P2 \leq B < P,以及另一个整数 NN,满足 1N<P1 \leq N < P

请你求出一个最小的非负整数 LL 使得:

</p>

BL == N (mod P)

这实际上是求一个 离散对数(Discrete Logarithm)问题。

输入格式

输入包含若干行,每行包含三个整数 P,B,NP, B, N

输出格式

对于每一组输入,输出最小的整数 LL,使得 BLN(modP)B^L \equiv N \pmod{P}

若无解,输出 "no solution"(不加引号);

每个结果占一行。

5 2 1
5 2 2
5 2 3
5 2 4
5 3 1
5 3 2
5 3 3
5 3 4
5 4 1
5 4 2
5 4 3
5 4 4
12345701 2 1111111
1111111121 65537 1111111111
0
1
3
2
0
3
1
2
0
no solution
no solution
1
9584351
462803587