【做题笔记】数论做题笔记
前言
初等数论学习I
Euclid Problem:板题,用 求出的两个解就是 最小的整数解
Gift Dilemma:将方程变为 ,枚举 前的系数,若 ,那么时间复杂度为
[POI2005] SKO-Knights:如果能到达原先所有横坐标,并且能到达原先所有纵坐标,就可以到达原先所有坐标。为了方便考虑令最后分出的两个向量中有一个竖直向量,由于它只会对竖直方向有影响,所以另一个非竖直向量横坐标应该为 。也就是若现在在合并 ,首先求出 的解,那么非竖直向量应该是 ,记为 。人话说就是 个 向量和 个 向量合并。通过向量 ,我们只能走到 ,但是我们要走到 ,所以竖直向量纵坐标要调整到 。同理可得竖直向量为
[POI2011] SEJ-Strongbox:由于 可以与 相等,因此若 为密码,那么 都是密码。由此可得,由于前 个数都不是密码,所以它们的因子也都不是密码。而最小的密码一定在第 个数因子的集合里。将之前所说的因子划掉,留下的最小的因子就是最小的密码 ,又因 的倍数都是密码,答案即为 。稍微优化一下就是直接划掉 的因子,然后再在 中找。
[WC2021] 斐波那契:没写,期待发货
[POI2012] WYR-Leveling Ground:没写,期待发货
ETF - Euler Totient Function:欧拉函数板子
Irreducable Basic Fractions:欧拉函数板子
Enumerating Rational Numbers:先预处理欧拉函数,再二分出分母,最后暴力出分子。
上帝与集合的正确用法:一个奇怪的结论,当 的指数够大的时候,这就是一个确定的值。令 表示指数为 时的结果,每次递归 ,在 的时候返回 即可。
[[六省联考 2017] 相逢是问候:没写,期待发货
[SDOI2011] 计算器:拼凑题,需要注意的是 BSGS
时 可能是 的倍数,需要特判一下。
MOD - Power Modulo Inverted:扩展 BSGS
板子
SDOI2013] 随机数生成器:较恶心的推式子题,一顿乱推首先不难得出 ,后面这西格玛是等比数列,运用等比数列求和公式易将其化为 ,接着一顿化到 ,就可以用大步小步做了。
[NOI2018] 屠龙勇士:恶心题\ouu,但也教会了我许多细节处理。首先显然每次选择的剑都是唯一的,这个可以考虑用 multiset
或手写平衡树预处理出来,记为,然后建立方程组 ,接着用扩展中国剩余定理随便搞一下。
[COCI2012-2013#6] BAKTERIJE:没写,期待发货
[SDOI2010] 古代猪文:实际上求 。先用个欧拉 ,而由于模数是质数,所以 。但此时用 Lucas
由于模数太大了还会挂,考虑将 质因数分解为 ,问题就转化为求线性方程组,再用一下 Lucas
定理即可。
小 A 与两位神仙:没写,期待发货
[ WC2020] 猜数游戏:没写,期待发货
「SWTR-8」幂塔方程:没写,期待发货
【模板】二次剩余 :板子
[Code+#7] 同余方程:没写,期待发货
【模板】扩展卢卡斯定理/exLucas:没学,期待发货
初等数论学习II
初等数论学习III
Extreme Extension:没写,期待发货
完全平方数:设 表示 的范围内所有不讨厌的数,最后只需要二分答案一下即可。接下来的想法大概是线性筛出值域范围内所有小 X 不讨厌的数,但是值域范围内显然无法实现这一点。如果直接筛去 的倍数的话, 和 的倍数显然会有一部分重复,人话说就是会有一些数被减去多遍,这显然是不好的。而由于 的倍数会完全包含在 的倍数的集合里面,所以我们先只考虑筛质数的平方的倍数。
但是此时在筛 的倍数和 的倍数时, 会在 和 的时候都被减去一次,所以类似地,我们考虑再加上 的倍数。然后又会有数被加多遍,所以又要再减去.....以此类推,就可以得到容斥的想法。
综上,我们枚举 表示 的平方的倍数对答案有多少贡献,显然有在 里面 的平方的倍数有 。再结合前面的讨论,归纳一下可得当 有奇数个不同质因子的时候贡献为 ,有偶数个的时候贡献为 。因此得到 。
一个比较细节的地方是打表发现最后的答案不会超过 的两倍,所以二分的边界和预处理 的边界由此可以确定。
经验
1.(扩展)欧几里得
2. (扩展)欧拉定理
3. (扩展)大步小步算法
4. (扩展)中国剩余定理
取模的时候建议模数除以一下 ,防止爆炸
求出来的 建议先取好模再运算
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通