随笔 - 46  文章 - 0  评论 - 1  阅读 - 6225

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 }
复制代码

 

posted on   whz2002  阅读(112)  评论(0)    收藏  举报
努力加载评论中...
编辑推荐:
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
阅读排行:
· 接口被刷百万QPS,怎么防?
· 提升Avalonia UI质感,跨平台图标库选型实践
· 告别图形界面:Windows系统OpenSSH服务部署
· C# 中委托和事件的深度剖析与应用场景
· Dify实战案例:AI邮件批量发送器!
< 2025年6月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12

点击右上角即可分享
微信分享提示