“大步小步,永不服输。”
Baby Step, Giant Step
用于求解
求解
根据欧拉定理我们得知
那么我们缩小求值范围得到
但
我们设
考虑优化方程:
把
容易发现,
考虑对
时间复杂度为 std::map
的时间,另一支
题目简介
题目名称:可爱的质数 /
题目来源:天津省选
评测链接
评测链接
形式化题意:给定 no solution
。
数据范围:
即板子。
参考实现
1 | std::map<ll,ll>Hash; |
这个实现好像总感觉哪里有问题,欢迎求
Ex Baby Step, Giant Step
与不同
求解
我们可以分类讨论来解决问题。
若
,则 设
,再次对 分类讨论。 - 若
,直接执行 算法。 - 若
,则转换为 。
- 若
我们现在只考虑
如果
那考虑继续转换问题:
这样的话,我们把原来的同余方程,转换成了另一个同余方程,可以证明,至多转换
题目简介
题目名称:扩展
题目来源:
评测链接
评测链接
形式化题意:求满足
数据范围:
有递归写法,也可以使用 while
来进行,注意求逆元在不保证
参考实现
1 | int exgcd(int a,int b,int &x,int &y) |
例题
随机数生成器
题目简介
题目名称:随机数生成器
题目来源:山东
评测链接:https://www.luogu.com.cn/problem/P3306
形式化题意:有一个序列
数据范围:
化简递推式:
当然,
所以我们就求解
化简式子得到
期间有很多可以特判的地方,需要注意。
AC Code
1 | // ----- Eternally question----- |
计算器
题目简介
题目名称:计算器
题目来源:山东
评测链接
评测链接
给定
- 给定
求 ; - 给定
求满足 的最小非负整数 ; - 给定
求满足 的最小非负整数 。
多测,无解输出 Orz, I cannot find x!
。
数据范围:
第一个操作快速幂解决,第二个操作我们化简
AC Code
1 | // ----- Eternally question----- |
签到题 / 多少个 1?
题目简介
题目名称:签到题 / 多少个
题目来源:洛谷月赛
评测链接:https://www.luogu.com.cn/problem/P4884
形式化题意:求出最小的正整数
数据范围:
简单来讲,就是求
由于 long long
,所以可以选择龟速乘或者 __int128_t
代替,但是龟速乘会多一个 std::unordered_map
并不支持 __int128_t
。
AC Code
1 | // ----- Eternally question----- |
New Product
题目简介
题目名称:
题目来源:洛谷原创
评测链接:https://www.luogu.com.cn/problem/P4028
形式化题意:有一个数 Couldn't Produce!
。给定
数据范围:
简化一下题意,得到当
这就是个
AC Code
1 | const int INF=0x3f3f3f3f; |
CQOI2018 破解D-H协议
题目简介
题目名称:破解
题目来源:重庆
评测链接
评测链接
给定一个质数
求
数据范围:
时空限制:
原题意很复杂(没有
已知了
但事实上,只有
当前实现
1 | inline int Bsgs(int a,int b) |
但是否这道题有其特殊的性质呢。
注意到质数与原根对于每一个测试点是固定的,而我们每一次的询问都要调用
因为有 次优解通过本题了。
对于这种多次询问且 但由于众所周知的常数原因也没快多少甚至还慢了些,甚至还爆了 )。long long
然后翻车
AC Code
1 | // ----- Eternally question----- |
快乐肥宅
题目简介
题目名称:【
题目来源:洛谷原创
评测链接:https://www.luogu.com.cn/problem/P5345
形式化题意:给定
数据范围:
我们可以得到
AC Code
1 | // ----- Eternally question----- |
正统板子
上述很多题都是边学边写的,有些是自己糊的有些是贺的题解,然后导致出现了各种各样不一样的常数不同的板子,所以这里给出我最后使用的板子,以供背诵(常数较小的一种)。
BSGS
1 | inline int Bsgs(int a,int b) |
EXBSGS
1 | inline int exBsgs(int a,int b,int p) |