Codeforces.100633J.Ceizenpok's formula(扩展Lucas)
题目链接
->扩展Lucas
//求C_n^k%m
#include <cstdio>
typedef long long LL;LL FP(LL x,LL k,LL p)
{LL t=1ll;for(; k; k>>=1,x=x*x%p)if(k&1) t=t*x%p;return t;
}
void Exgcd(LL a,LL b,LL &x,LL &y)
{if(!b) x=1ll, y=0ll;else Exgcd(b,a%b,y,x),y-=a/b*x;
}
LL Inv(LL a,LL mod)
{
// if(!a) return 0ll;//?LL x,y; Exgcd(a,mod,x,y);x=(x%mod+mod)%mod;//!
// if(!x) x=mod;return x;
}
LL Fact(LL n,LL pi,LL pk)//factorial Calc n!%(pi^ki) (不计算pi因子 计算C()时提出)
{if(!n) return 1ll;LL ans=1ll;if(n/pk)//n>=pk{for(LL i=2; i<=pk; ++i)//每pi^ki一循环的部分 if(i%pi) (ans*=i)%=pk;ans=FP(ans,n/pk,pk);//一共n/pk个循环 }for(LL i=2; i<=n%pk; ++i)//pi^ki循环之外的部分 mod pk意义下所以i=2 to n%pk即可 if(i%pi) (ans*=i)%=pk;return ans*Fact(n/pi,pi,pk)%pk;//[n/pi]!部分
}
LL C(LL n,LL m,LL mod,LL pi,LL pk)//Calc C_n^m%(pi^ki)
{if(n<m) return 0ll;LL a=Fact(n,pi,pk),b=Fact(m,pi,pk),c=Fact(n-m,pi,pk),k=0ll;//k:质因子pi的个数 for(LL i=n; i; i/=pi) k+=i/pi;//计算x!中pi因子个数:k=f(x)=f(x/pi)+x/pi for(LL i=m; i; i/=pi) k-=i/pi;for(LL i=n-m; i; i/=pi) k-=i/pi;LL ans=a*Inv(b,pk)%pk*Inv(c,pk)%pk*FP(pi,k,pk)%pk;return ans*(mod/pk)%mod*Inv(mod/pk,pk)%mod;//CRT合并
}int main()
{LL n,k,mod,ans=0ll;scanf("%I64d%I64d%I64d",&n,&k,&mod);for(LL now=mod,i=2; i<=mod; ++i)if(!(now%i)){LL pk=1ll;while(!(now%i)) pk*=i, now/=i;(ans+=C(n,k,mod,i,pk))%=mod;}printf("%I64d",ans);return 0;
}
转载于:https://www.cnblogs.com/SovietPower/p/8453934.html
Codeforces.100633J.Ceizenpok's formula(扩展Lucas)相关推荐
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)
J. Ceizenpok's formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- [学习笔记]扩展LUCAS定理
可以先做这个题[SDOI2010]古代猪文 此算法和LUCAS定理没有半毛钱关系. [模板]扩展卢卡斯 不保证P是质数. $C_n^m=\frac{n!}{m!(n-m)!}$ 麻烦的是分母. 如果互 ...
- Lucas定理与扩展Lucas
之前看了乘法逆元(详见除法取模与逆元),发现不能处理不互质的情况,于是去找方法,最后找到了Lucas定理... 虽然与期待中的不一样,但是还是非常有用的. (1)Lucas定理: 若p为素数,则有: ...
- Lucas定理扩展Lucas
Lucas定理 求解 C n m m o d p C_n^m\mod p Cnmmodp (p为素数) 蒟蒻不会证明,记着递推公式就好=_= L u c a s ( n , m ) = C ( ...
- BZOJ 4338 糖果(扩展Lucas定理+CRT)
题目链接:BZOJ 4338 题目大意:用数字1~k填一个n*m的表格,每种数字可用任意次,要求每行数字1~m列单调不减,任意两行不完全相同,求方案数对P取模的值. 题解:扩展Lucas+CRT模板题 ...
- [BZOJ4338][BJOI2015]糖果(扩展Lucas)
先求出式子$P_{C_{K+m-1}^{m}}^{n}$,然后对于排列直接$O(n)$求解,对于组合用扩展Lucas求解. 但这题数据并没有保证任何一个模数的质因子的$p^k$在可线性处理的范围内,于 ...
- 专题·Lucas定理【including Lucas定理,扩展Lucas
初见安~这里是数论专题(6)[详见数论专栏 本篇有前置知识点需要掌握,建议先了解下:费马小定理,中国剩余定理,乘法逆元 一.Lucas定理 Lucas定理用于求解的组合数取模的问题.其中p为质数. 组 ...
- [BZOJ]2142 礼物 扩展Lucas
2142: 礼物 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 1788 Solved: 748 [ Submit][ Status][ Di ...
- 扩展Lucas定理 扩展Lucas板子
题意概述:多组询问,给出N,K,M,要求回答C(N,K)%M,1<=N<=10^18,1<=K<=N,2<=M<=10^6 分析: 模数不为质数只能用扩展Lucas ...
- bzoj 4830: [Hnoi2017]抛硬币 [范德蒙德卷积 扩展lucas]
4830: [Hnoi2017]抛硬币 题意:A投a次硬币,B投b次硬币,a比b正面朝上次数多的方案数,模\(10^k\). \(b \le a \le b+10000 \le 10^{15}, k ...
最新文章
- 面试官:你能聊聊高并发下的接口幂等性如何实现吗?
- 读取Assets中的文件数据
- 数据库除关系运算符执行过程详解
- PAT_B_1008_Java(20分)
- [牛客数据库SQL实战] 11~20题及个人解答
- 无监督学习才不是“不要你管”
- MVC Remote属性验证
- $(document).ready(function(){}),$().ready(function(){})和$(function(){})三个有区别么
- JavaScript编写计算器-《JavaScript王者归来》读书笔记1
- 什么是登录Token
- 下载Youtube单个视频和播放列表的方法详细教程
- 2021-2027全球与中国陶瓷基板白板市场现状及未来发展趋势
- 约会Rendezvous
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Spring系列之依赖注入的三种方式
- excel使用教程_Excel 有多强大?你用 Excel 做的最酷的事情是什么?
- 经典游戏服务器端架构
- 2020-08-11
- 半包、全包、套餐、整装该如何选择?
- VDO-SLAM :一种动态目标感知的视觉SLAM系统