码迷,mamicode.com
首页 > 其他好文 > 详细

一个思考Exlucas时的错误思路和对CRT的一些理解

时间:2020-01-27 09:13:08      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:我不知道   因数分解   不同   现在   code   问题   大小   个数   inline   

一个思考Exlucas时的错误思路和对CRT的一些理解

小引

此文章是记录一些学习 \(Exlucas\) 时纠结的问题。

问题的原因是对 \(CRT\) 的理解不通彻,在此做出一些探讨。

正文

\(Exlucas\) 的模板问题是求:
\[ C^{n}_{m}\quad(mod\;p) \]
其中, \(n\)\(m\) 很大,不能够直接求阶乘。\(p\) 大小可接受但是不保证是质数。

扩展的思路是把 \(p\) 进行质因数分解,然后分别模分解后的 \(p_i^k\) 再用 \(CRT\) 组合起来。

我当时刚刚学完 \(Lucas\) 以为扩展是赤裸裸的 \(CRT+Lucas\) 就想直接模 \(p_i\) 不行吗?

并且陷入了这样一个问题:

给定 \(x\) 满足:
\[ \begin{cases} x\equiv a_1\quad(mod\;p_1)\x\equiv a_2\quad(mod\;p_2)\\cdots\x\equiv a_n\quad(mod\;p_n)\\end{cases} \\bf 和\\rm \begin{cases} x\equiv b_1\quad(mod\;p_1^{k_1})\x\equiv b_2\quad(mod\;p_2^{k_2})\\cdots\x\equiv b_n\quad(mod\;p_n^{k_n})\\end{cases} \]
作为前提的 \(x\) 是一样的,那么 \(CRT\) 为什么解出来的不同的 \(x\) 呢。(当时我真的是蠢枯了

现在看来,显而易见,\(x\) 不是唯一的,而是以所以模数的公倍数 \(M\) 为间隔的无限个数。

我们求出来的是满足条件的最小正整数解。第一个和第二个的解的关联是这样的:

技术图片

所以,我们用 \(p_i\) 那租解出来的和 \(p_i^{k_i}\) 那组解出来的不是一个,而且也没法(或者我不知道,但是既然 \(Exlucas\) 还存在,那应该是没有)用其中一个还原另外一个。

所以,必须对 \(p_i^{k_i}\) 取模,就需要 \(Exlucas\) 的那些操作了。


\(\frak by\;thorn\_\)

一个思考Exlucas时的错误思路和对CRT的一些理解

标签:我不知道   因数分解   不同   现在   code   问题   大小   个数   inline   

原文地址:https://www.cnblogs.com/thornblog/p/12235355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!