【NOIP训练】【数论】超级计算机

时间:2022-01-17 10:37:55

题目描述
有以下几个问题:
1 给定正整数 【NOIP训练】【数论】超级计算机 求方程  【NOIP训练】【数论】超级计算机 的最小非负整数解。
2 给定正整数 【NOIP训练】【数论】超级计算机求方程 【NOIP训练】【数论】超级计算机的最小非负整数解。
3 给定正整数 【NOIP训练】【数论】超级计算机求方程 【NOIP训练】【数论】超级计算机 在模 【NOIP训练】【数论】超级计算机 意义下解的数量。
4 给定正整数 【NOIP训练】【数论】超级计算机求  【NOIP训练】【数论】超级计算机 的值。其中 【NOIP训练】【数论】超级计算机 是欧拉函数, 【NOIP训练】【数论】超级计算机是莫比乌斯函数。
输入格式
输入文件共四行,按上述描述中四个问题的顺序,给出每个问题。
第一行三个正整数 【NOIP训练】【数论】超级计算机  表示第一个问题,保证 【NOIP训练】【数论】超级计算机
第二行三个正整数 【NOIP训练】【数论】超级计算机 表示第二个问题,保证 【NOIP训练】【数论】超级计算机 
第三行三个正整数 【NOIP训练】【数论】超级计算机 表示第三个问题,保证 【NOIP训练】【数论】超级计算机 为质数且 【NOIP训练】【数论】超级计算机 
第四行三个正整数 【NOIP训练】【数论】超级计算机 表示第四个问题。
输出格式
共四行每行一个整数,分别表示四个问题的答案。对于前两个问题,若问题无解则输出-1。对于第三个问题你只需输出解的数量。
样例数据
super.in
3 6 8
9 10 12
4 4 7
5 4 20

super.out
2
-1
2
4
数据范围
20% 的数据: 【NOIP训练】【数论】超级计算机
60% 的数据: 【NOIP训练】【数论】超级计算机
100% 的数据: 【NOIP训练】【数论】超级计算机
评分方式
对于每个测试点:
• 第一个问题正确得 2 分。
• 第二个问题正确得 3 分。
• 第三个问题正确得 3 分。

题解

第一问:将式子化成  【NOIP训练】【数论】超级计算机 , 拓展欧几里得即可。

第二问: BSGS大步小步算法解高次同余方程。

详情请见TonyFang博客:http://tonyfang.is-programmer.com/posts/178997.html

【NOIP训练】【数论】超级计算机

【NOIP训练】【数论】超级计算机

第三问:求出 【NOIP训练】【数论】超级计算机 的一个原根 【NOIP训练】【数论】超级计算机,可以求出 【NOIP训练】【数论】超级计算机,并设 【NOIP训练】【数论】超级计算机, 则由费马小定理可知,解该方程等价于解 【NOIP训练】【数论】超级计算机 所以实际上它是前两个问题的组合应用。

第四问:Pollard Rho算法和Millar Rabin算法的应用。