当前位置: 首页 > news >正文

洛谷 P3807:卢卡斯定理 / Lucas 定理

【题目来源】
https://www.luogu.com.cn/problem/P3807

【题目描述】
给定整数 n,m,p 的值,求出 C(n+m, n) mod p 的值。
输入数据保证 p 为质数。
注:C 表示组合数。

【输入格式】
本题有多组数据。
第一行一个整数 T,表示数据组数。
对于每组数据:一行,三个整数 n,m,p。

【输出格式】
对于每组数据,输出一行,一个整数,表示所求的值。

【输入样例】
2
1 2 5
2 1 5

【输出样例】
3
3

【数据范围】
对于 100% 的数据,1≤n,m,p≤10^5,1≤T≤10。

【算法分析】
● Lucas 定理是数论中用于计算组合数 C(n, m) 模素数 p 的值的经典定理,由法国数学家 Édouard Lucas 提出。其核心思想是将大数的组合数模运算分解为更小规模的子问题,适用于模数为素数的应用场景。

● 算法竞赛中,常用 Lucas 定理的如下形式。
C(n, m) ≡ C(n%p, m%p) • C(n/p, m/p) (mod p),其中 p 为素数。

● Lucas 定理的 C++ 代码如下所示。

typedef long long LL;LL C(LL n,LL m,LL p) {if(m>n) return 0;return fac[n]*fastPow(fac[m],p-2,p)*fastPow(fac[n-m],p-2,p)%p;
}LL Lucas(LL n,LL m,LL p) {if(m==0) return 1;else return C(n%p,m%p,p)*(Lucas(n/p,m/p,p))%p;
}

【算法代码】

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N=1e5+5;
LL fac[N];
int T;int fastPow(LL a,LL n,LL p) {LL ans=1;while(n) {if(n & 1) ans=ans*a%p;n>>=1;a=a*a%p;}return ans%p;
}LL C(LL n,LL m,LL p) {if(m>n) return 0;return fac[n]*fastPow(fac[m],p-2,p)*fastPow(fac[n-m],p-2,p)%p;
}LL Lucas(LL n,LL m,LL p) {if(m==0) return 1;else return C(n%p,m%p,p)*(Lucas(n/p,m/p,p))%p;
}int main() {fac[0]=1;cin>>T;while(T--) {LL n,m,p;cin>>n>>m>>p;for(LL i=1; i<=p; i++) {fac[i]=(fac[i-1]*i)%p;}cout<<Lucas(n+m,m,p)%p<<endl;}return 0;
}/*
in:
2
1 2 5
2 1 5out:
3
3
*/




【参考文献】
https://oi-wiki.org/math/number-theory/lucas/
https://cloud.tencent.com/developer/article/1092375



 

http://www.zskr.cn/news/137221.html

相关文章:

  • MouseTester终极指南:5分钟精通专业鼠标性能测试
  • Python在云原生微服务可观测体系建设中的全链路指标采集与诊断实践 - 教程
  • PPTTimer:解放双手的智能PPT演讲计时器终极指南
  • 国产数据库DM8从入门到实操:全流程学习心得
  • 工业现场通信模块开发中的Keil安装常见问题解析
  • AMD调优实战:3大秘诀让你的Ryzen处理器性能大幅提升
  • BLIP-2 调用示例
  • Sunshine游戏串流负载均衡终极配置指南:打造全家共享的高性能游戏系统
  • 游戏修改新境界:WeMod专业版功能完全解锁指南
  • 新电脑验机工具介绍及避坑指南
  • 5步实战AMD处理器性能调优:从硬件监控到系统优化的完整指南
  • 城通网盘高速下载解决方案:全面优化下载体验的技术实践
  • 城通网盘直链提取神器:3步告别龟速下载的完美方案
  • 游戏修改工具WeMod Patcher:零成本解锁Pro功能的完整指南
  • 图解说明QTimer::singleShot执行流程与时机
  • PPTTimer:让演讲时间管理变得轻松高效
  • MouseTester终极指南:专业鼠标性能测试与优化完整方案
  • 魔兽争霸3帧率优化终极指南:8步实现稳定180fps流畅体验
  • 3大技术突破:重新定义设计标注工作流效率标准
  • WarcraftHelper:魔兽争霸III游戏体验全面优化方案
  • 抖音视频批量下载完整教程:轻松管理个人主页视频资源
  • PC游戏手柄兼容性终极指南:DS4Windows完全解决方案
  • 终极演讲时间管理方案:PPTTimer智能助手完全指南
  • 智能图像识别自动点击器:为什么它能看懂屏幕并精准操作?
  • 城通网盘直链提取新方案:告别限速下载的实用手册
  • ncmdumpGUI:轻松解密网易云音乐加密文件的专业解决方案
  • 3大核心技术构建高效游戏串流多设备并行系统
  • Android 自定义 View :打造一个跟随滑动的丝滑指示器
  • 魔兽争霸III现代系统兼容性深度优化实战
  • Lumafly模组管理器:跨平台游戏模组管理的终极解决方案