hdu 3037 费马小定理+逆元除法取模+Lucas定理
组合数学推推推最后,推得要求C(n+m,m)%p
其中n,m小于10^9,p小于1^5
用Lucas定理求(Lucas定理求nm较大时的组合数)
因为p数据较小可以直接阶乘打表求逆元
求逆元时,由费马小定理知道p为素数时,a^p-1=1modp可以写成a*a^p-2=1modp
所以a的逆元就是a^p-2,
求C(n+m,m)。
n,m<=1000,二维数组递推。
n,m<=1000000,一维数组预处理出阶乘。
Lucas适用于n,m较大,MOD较小的情况。
#include <iostream>
#define MAX 100005 typedef long long ll;
using namespace std; ll mul[MAX],MOD; void init(){
mul[]=;
for(int i=;i<=MOD;i++){
mul[i]=mul[i-]*i%MOD;
}
}
ll qMod(ll a,ll b){
ll ans=;
a%=MOD;
while(b){
if(b&) ans=ans*a%MOD;
b>>=;
a=a*a%MOD;
}
return ans;
}
ll C(ll a,ll b){
if(a<b) return ;
return mul[a]*qMod(mul[b]*mul[a-b],MOD-)%MOD;
}
ll Lucas(ll a,ll b){
if(b==) return ;
return (C(a%MOD,b%MOD)*Lucas(a/MOD,b/MOD))%MOD;
}
int main()
{
int T;
ll n,m;
cin>>T;
while(T--){
cin>>n>>m>>MOD;
init();
cout<<Lucas(n+m,m)<<endl;
}
return ;
}
hdu 3037 费马小定理+逆元除法取模+Lucas定理的更多相关文章
- hdu 4704(费马小定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704 思路:一道整数划分题目,不难推出公式:2^(n-1),根据费马小定理:(2,MOD)互质,则2^ ...
- HDU 4549 (费马小定理+矩阵快速幂+二分快速幂)
M斐波那契数列 Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- hdu 4704(费马小定理+快速幂取模)
Sum Time Limit: 2000/ ...
- 组合数取模Lucas定理及快速幂取模
组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1) , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...
- [转]组合数取模 Lucas定理
对于C(n, m) mod p.这里的n,m,p(p为素数)都很大的情况.就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了. 这里用到Lusac定理 ...
- hdu 3944 DP? 组合数取模(Lucas定理+预处理+帕斯卡公式优化)
DP? Problem Description Figure 1 shows the Yang Hui Triangle. We number the row from top to bottom 0 ...
- 组合数取模&&Lucas定理题集
题集链接: https://cn.vjudge.net/contest/231988 解题之前请先了解组合数取模和Lucas定理 A : FZU-2020 输出组合数C(n, m) mod p (1 ...
- [hdu5226]组合数求和取模(Lucas定理)
题意:给一个矩阵a,a[i][j] = C[i][j](i>=j) or 0(i < j),求(x1,y1),(x2,y2)这个子矩阵里面的所有数的和. 思路:首先问题可以转化为求(0,0 ...
- HDU 3923 Invoker(polya定理+乘法逆元(扩展欧几里德+费马小定理))
Invoker Time Limit : 2000/1000ms (Java/Other) Memory Limit : 122768/62768K (Java/Other) Total Subm ...
随机推荐
- Asp.net MVC3中全局图片防盗链
怎么样在Asp.Net MVC3中做到全局图片防盗链?如果熟悉Asp.Net的页面生命周期,相信解决这个问题应该很容易.下面就演示一下如何去做? 一.首先是全局的,我们肯定要在Global.asax文 ...
- 动态库对外暴露api的方法
1 windows的动态库 在要export的函数声明的前面加上__declspec(dllexport)标识这个函数是从该dll中export出来给其它模块使用的. declspec是declare ...
- Error524 源站处理超时 Error 524: A timeout occurred
https://su.baidu.com/helps/index.html#/4/5a61e4b5b34f697f13234a5b Error524 源站处理超时 更新时间:2018-01-19 20 ...
- TVirtualStringTree的Minimal例子学习
预步骤第一步,定义数据结构type PMyRec = ^TMyRec; TMyRec = record Caption: WideString; end;预步骤第二步,规定取得节点数据时候的大小pro ...
- APP 商城功能
1.同步系统时间2.滑动解锁3.九宫格加锁解锁4.APP启动加载效果5.首次启动APP的欢迎广告6.APP顶部幻灯轮播7.下拉刷新8.商品数据加载9.商品分类.搜索10.模拟键盘11.商品按价格.人气 ...
- 【Java线程】锁机制:synchronized、Lock、Condition(转)
原文地址 1.synchronized 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility). 1.1 原子性 ...
- mac 在 finder 当前 路径下 打开 terminal 的办法
1. 在:系统偏好设置 -> 键盘 -> 服务 或者 finder -> 服务偏好设置, 如下: 建议配合快捷键使用,本人使用的快捷键: 在 terminal 新建标签 contro ...
- vue 动态传值笔记
:prop="'answers.a' + item.split('.')[1]+'.total'" {{scope.row.answers['a'+item.split('.')[ ...
- POJ1185 炮兵阵地 —— 状压DP
题目链接:http://poj.org/problem?id=1185 炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions ...
- 关于JDK安装javac失效的几个问题。
1.按照指南一步一步配置环境变量. 打开cmd,测试. 2.如果还是没有用,注意你的JAVA_HOME配置的是用户变量还是系统变量,改成系统变量. 打开cmd,测试. 3.如果还是没有用,不要你的JA ...