Lucas定理
Code(luogu P3807):
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define ll long long 5 #define MN 100005 6 using namespace std; 7 inline int in(){ 8 int x=0;bool f=0; char c; 9 for (;(c=getchar())<'0'||c>'9';f=c=='-'); 10 for (x=c-'0';(c=getchar())>='0'&&c<='9';x=(x<<3)+(x<<1)+c-'0'); 11 return f?-x:x; 12 } 13 ll fct[MN]; 14 int n,m,p,T; 15 inline int qpow(ll x,int k){ 16 ll res=1ll;while (k){ 17 if (k&1) res=(res*x)%p; 18 x=(x*x)%p;k>>=1; 19 }return res; 20 } 21 inline ll calc(ll x,ll y){ 22 return (x<y)?0ll:(fct[x]*qpow(fct[y],p-2)%p*qpow(fct[x-y],p-2))%p; 23 } 24 inline ll lucas(ll x,ll y){ 25 return (y)?(calc(x%p,y%p)*lucas(x/p,y/p))%p:1ll; 26 } 27 int main() 28 { 29 T=in();while (T--){ 30 n=in();m=in();p=in();fct[0]=1ll; 31 for (int i=1;i<=n+m;++i) fct[i]=(1ll*fct[i-1]*i)%p; 32 printf("%d\n",lucas(n+m,n)%p); 33 }return 0; 34 }
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
· 接口被刷百万QPS,怎么防?
· 提升Avalonia UI质感,跨平台图标库选型实践
· 告别图形界面:Windows系统OpenSSH服务部署
· C# 中委托和事件的深度剖析与应用场景
· Dify实战案例:AI邮件批量发送器!