zoukankan      html  css  js  c++  java
  • 一个思考Exlucas时的错误思路和对CRT的一些理解

    一个思考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) 满足:

    [egin{cases} xequiv a_1quad(mod;p_1)\ xequiv a_2quad(mod;p_2)\ cdots\ xequiv a_nquad(mod;p_n)\ end{cases} \ f 和\ m egin{cases} xequiv b_1quad(mod;p_1^{k_1})\ xequiv b_2quad(mod;p_2^{k_2})\ cdots\ xequiv b_nquad(mod;p_n^{k_n})\ end{cases} ]

    作为前提的 (x) 是一样的,那么 (CRT) 为什么解出来的不同的 (x) 呢。(当时我真的是蠢枯了

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

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

    CRT解的分布

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

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


    (frak by;thorn\_)

  • 相关阅读:
    LIB和 DLL区别
    C++ STL总结
    浅谈static和extern关系
    死锁及处理
    函数模板与模板函数
    Linux无法启动httpd_正在启动httpd
    httpd不允许远程连接问题
    虚拟机UUIDexist_更改UUID
    MySQL远程连接丢失问题
    Apache服务端允许跨域
  • 原文地址:https://www.cnblogs.com/thornblog/p/12235355.html
Copyright © 2011-2022 走看看