大组合数取模——fzu 2020(可做模板)
2012-01-11 14:38
477 查看
http://blog.csdn.net/swm8023/article/details/6525980
比较好的资料
求C(10,3,107)
第一步: 10/3
第二步: *9/2
第三步:*8/1
如第一步里会出现除不下时的情况,用中国剩余定理做
View Code
比较好的资料
求C(10,3,107)
第一步: 10/3
第二步: *9/2
第三步:*8/1
如第一步里会出现除不下时的情况,用中国剩余定理做
View Code
#include<iostream> #include<stdio.h> using namespace std; int pow_mod(int a,int n,int p) { int ans=1,t=a; while(n) { if(n&1) ans=(long long)ans*t%p; t=(long long)t*t%p; n>>=1; } return ans; } int cal(int n,int m,long p) { if(m>n-m) m=n-m; int ans=1; for(int i=1;i<=m;i++) { ans=(long long)ans*(n-i+1)%p; int a=pow_mod(i,p-2,p); ans=(long long)ans*a%p; } return ans; } int com_mod(int n,int m,long p) { if(n<m)return 0; return cal(n,m,p); } int lucas(int n,int m,long p) { int r=1; while(n&&m&&r) { r=(long long)r*com_mod(n%p,m%p,p)%p; n/=p; m/=p; } return r; } int main() { int t; scanf("%d",&t); while(t--) { int n,m,p; scanf("%d%d%d",&n,&m,&p); printf("%d\n",lucas(n,m,p)); } }
相关文章推荐
- 【FZU2020】【Lucas模板题】【求组合数取模】
- fzu 2020 组合数对素数取模lucas定理
- FZU 2020 组合数取模(Lucas定理模版)
- fzu 2020 组合数对素数取模
- 组合数取模之逆元方法+模板
- 组合数取模(卢卡斯定理、模板)
- FZU 1649 Prime number or not (米勒拉宾大素数判断+快速幂取模+随机数模板)
- FZU 2020 组合 -- (大组合数取模 Lucas定理)
- FZU 2020 组合(组合数 lucas定理模板题)
- 组合数取模模板
- 组合数取模,预处理阶乘逆元模板
- 组合数取模模板
- fzu 2020 Lucas 定理,组合数求模模板
- FOJ 2020 组合(组合数取素数摸模板:Lucas)
- FZU 2020 组合(扩展欧几里得)
- 组合数求模模板
- 组合数C(m,n)——模板
- hdu 6114 Chess(组合数取模)(Lucas定理)
- 组合数取模常用函数与方法总结
- FZU 2020 组合 lucas