首页 > 其他分享 >(ex)CRT / (ex)Lucas

(ex)CRT / (ex)Lucas

时间:2024-11-15 19:45:30浏览次数:1  
标签:frac Lucas CRT pmod dfrac bmod cdots ex equiv

以下所有分数默认取整。

CRT

有 \(\begin{cases}x\equiv a_1\pmod {p_1}\\x\equiv a_2\pmod {p_2}\\\cdots\\x\equiv a_n\pmod {p_n}\end{cases}\),且所有 \(p\) 互质。

令 \(p'_i=\dfrac {\prod p}{p_i}\),且 \(p'_i\) 在 \(\bmod p_i\) 意义下逆元为 \(q_i\),则可构造解为 \(x=\sum\limits_{i=1}^na_ip'_iq_i\)。

注意这里没有保证 \(p\) 是质数,所以要用 exgcd 求逆元。

exCRT

\(p\) 不互质了,怎么办?

每次合并两个方程 \(x\equiv r_1\pmod p_1\) 和 \(x\equiv r_2\pmod p_2\),假设现有方程是前者,初始 \(r_1=0, p_1=1\)。

我们现在需要满足 \(p_1k_1+r_1\equiv r_2\pmod p_2\),即 \(p_1k_1+r_1= r_2+p_2k_2\),移项即为 \(p_1k_1-p_2k_2=r_2-r_1\),这个 exgcd 解出来,判一下无解,否则就可以直接还原,如果解出来 \(x\),方程的通解就是 \(x+k\operatorname{lcm}(p_1,p_2)\)。

Lucas

对于 \(p\in \mathbb P\),有

\[\dbinom{n}{m}\equiv\dbinom{\frac n p}{\frac m p}\dbinom{n\bmod p}{m\bmod p}\pmod p \]

exLucas

\(p\) 不是质数,怎么办?

可以将 \(p\) 唯一分解,然后对于每个分离出来的质因子的幂解决,最后 CRT 合并,以下令这个因子幂为 \(p^k\)(上面的 \(p\) undef 了)。

现在变成了 \(\dbinom{n}{m}\equiv r\pmod{p^k}\),目标就是对每一个 \(p^k\) 求出 \(r\),把组合数拆开来:

\[\dfrac{n!}{m!(n-m)!}\equiv r\pmod{p^k} \]

左边式子不是很好求的,但是只要把 \(p\) 都提出来就好了,令数 \(n!\) 里面 \(p\) 因子的个数为 \(g(n)\),去除 \(p\) 因子的数为 \(f(n)\),则答案变为:

\[\dfrac{f(n)}{f(m)f(n-m)}p^{g(n)-g(m)-g(n-m)}\equiv r\pmod{p^k} \]

现在下面那个肯定是存在逆元了,只差快速算出 \(f,g\),先以 \(f\) 为例,下面式子都在 \(\bmod p^k\) 意义下进行。

\[\begin{aligned} f(n)&=n!\\ &=(p\cdot p^2\cdots p^t)(1\cdot 2\cdots (p-1)(p+1)\cdots n)\\ &=p^{\frac n p}(\dfrac n p)!(1\cdot 2\cdots (p-1)(p+1)\cdots n)\\ &=p^{\frac n p}f\left(\dfrac n p\right)\left(\prod\limits_{i\bmod p\not=0}^{p^k}i\right)^{\frac n{p^k}}\prod\limits_{i=p^k\frac{n}{p^k},i\bmod p\not=0}^{n}i\\ \end{aligned}\]

上面 \(f\) 里面阶乘要带换成 \(f\left(\dfrac n p\right)\) 的原因是这个里面可能还有 \(p\) 的因子,不断去除。这个就可以递归算了,\(g\) 同理,求的就是 \(f\) 最前面 \(p\) 的幂次。

\[g(n)=\dfrac{n}{p}+g\left(\dfrac n p\right) \]

两个边界都是 \(f(0)=g(0)=0\)。

标签:frac,Lucas,CRT,pmod,dfrac,bmod,cdots,ex,equiv
From: https://www.cnblogs.com/notears/p/18548459

相关文章

  • 防火墙形态之详解(Detailed Explanation of Firewall Form)
     ......
  • 为什么 Vue3 封装 Table 组件丢失 expose 方法呢?
    在实际开发中,我们通常会将某些常见组件进行二次封装,以便更好地实现特定的业务需求。然而,在封装Table组件时,遇到一个问题:Table内部暴露的方法,在封装之后的组件获取不到。代码展示为:constMyTable=defineComponent({name:'MyTable',props:ElTable.props,emits:......
  • handycontrol NotifyIcon ContextMenu
    <hc:NotifyIconText="xxxx程序"Visibility="Collapsed"Name="notifyIcon"Icon="/Assets/Ico/title.ico"Click="NotifyIcon_Click"MouseRightButtonDown="notifyIcon_MouseRightButtonDown"......
  • Vuex与Redux比较
    由于Vuex和Redux都是从Flux中衍生出来,同时Vuex对Redux部分思想也有一些借鉴,所以Vuex和Redux有很多相同点。很多资料也有介绍两者的对比,但大部分讲解的比较抽象,较难理解。笔者整理两者异同点,同时配有标准案例进行说明。注意本文不是科普vuex和redux相关概念,相关知识内容可以在官方......
  • 163邮箱发送邮件通知异常 org.springframework.mail.MailAuthenticationException: Au
    从腾讯企业邮箱切换成163邮箱,邮箱配置经过检查未作调整,网络检查均是正常,但发送邮件时一直报错org.springframework.mail.MailAuthenticationException:Authenticationfailed。解决办法:1.检查smtp服务是否打开(若未打开需要开启)2.客户端授权码需打开3.检查邮箱配置 ......
  • IndexPatternService几个重写的方法
    @Override@Transactional(rollbackFor=Exception.class)publicAddIndexPatternResponsenewIndexPattern(AddIndexPatternRequestrequest){IndexPatternItemindexPatternItem=request.getIndexPatternItem();AddIndexPatternResponseresponse=newAddIndexPatt......
  • java处理excel文件
    文章目录maven引入依赖编写ExcelUtil工具类使用ExcelUtil工具类maven引入依赖<!--处理excel依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency><......
  • Exchange 2016部署实施案例篇-04.Ex基础配置篇(下)
    上二篇我们对全新部署完成的ExchangeServer做了基础的一些配置,今天继续基础配置这个话题。DAG配置先决条件首先在配置DGA之前我们需要确保DAG成员服务器上磁盘的盘符都是一样的,大小建议最好也相同。 其次我们需要确保有一块网卡用于数据复制使用(PS:单块网卡也可以......
  • C# read json file throw exception: Could not load file or assembly 'System.Runti
    Couldnotloadfileorassembly'System.Runtime.CompilerServices.Unsafe,Version=4.0.4.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'oroneofitsdependencies.Thelocatedassembly'smanifestdefinitiondoesnotmatchtheassemblyr......
  • Java:An attempt was made to call a method that does not exist. The attempt was ma
    1.问题描述一个字段的类型从int变成了bigint,实体类也要同步更新为Long。修改完后只更新了这个类,结果运行就报错了。根据日志来看说“EntityKsGc.getKscc()Ljava/lang/Long;”这个方法不存在,但就是修改这个类,改成了Long类型,确确实实存在,另外从eclipse来看,也只提示修改了......