数论
Quack_quack
这个作者很懒,什么都没留下…
展开
-
高次同余笔记(二):extended-baby-step-giant-step算法
终于稍微有点空了。。 我们来看这个方程: a,b,p为常数且在int内。 注意到这次p可以为合数。 先来说说p为质数或者合数有什么问题。 对于a与p互质,那么有a^phi(p)=1(mod p),对于p是素数phi(p)==p-1,所以x的取值只要在0->n-2之中取就可以了.然而如果p为合数,phi(p) < p-1,这个范围不明确,就不好分块了。而且解是否存在,有几个,也很麻烦。原创 2015-11-20 00:41:14 · 898 阅读 · 0 评论 -
高次同余笔记(三):离散对数和原根
我们来看这个方程: a,b,c在int内,c是质数。 求x在[0,c-1]内所有的解。 这个怎么搞? 那我们换个方程: 这个方程 的解很明显是 但是我们换个角度,因为开根号这个操作数论里面不好搞。 这样有 通过这个式子可以算出 这样x就是一个指数式子,不含根号了。 但是e这个东西数论里面没有啊。 注意到这个底数的选取是任意的,那么随便选一个底数记作G。原创 2015-11-23 00:10:56 · 1298 阅读 · 0 评论 -
高次同余笔记(一):baby-step-giant-step算法
我们来看这个方程: a,b,p为常数且在int内。、p是质数。 这个怎么搞? 首先x的取值肯定在0到p-1之间。 暴搜?肯定超时啊。 优化暴搜?用meet-in-the-middle? 先来说说meet-in-the-middle怎么做。 就是找一个点把[0,p-1]这个区间分成两半(一般找中点),算出前一半塞到hash表里面,再算后一半看看hash表里面有没有。 复杂度大概是上原创 2015-11-17 00:35:30 · 3022 阅读 · 1 评论 -
二次同余方程模合数的一般解法
0.不讨论复杂情况的解释 对于一般的二次同余方程形如 可以通过配方化为下式 可通过换元,得到 解出X的取值,然后用2ax+b回带,用扩展欧几里得解线性同余方程就可以得到方程本来的解 注意上式得到了一般二次同余方程的形式,即 下文讨论上式的一般解法,并给出代码进行解释1.朴素的二次同余方程的解法 因为,因此很明显可以直接枚举。时间复杂度,如果m稍微大一些效率就会很低2.对原创 2015-12-05 20:50:29 · 12650 阅读 · 1 评论