Lucas定理
来源:互联网 发布:快速排序算法实现 编辑:程序博客网 时间:2024/05/16 14:13
#include <iostream>#include <vector>#include <algorithm>#include <cstdio>using namespace std;typedef long long LL;const int MAXN=1e4+5;const int MAX_P=1e4+5;const double eps=1e-8;int gcd(int a,int b) { return b==0?a:gcd(b,a%b); }int extgcd(int a,int b,int& x,int& y){ int d=a; if(b!=0) { d=extgcd(b,a%b,y,x); y-=(a/b)*x; }else { x=1;y=0; } return d;}int mod_inverse(int a,int m){ int x,y; extgcd(a,m,x,y); return (m+x%m)%m;}int fact[MAX_P];//预处理n! mod p的表 O(p)//分解n!=ap^e,返回a mod p O(log_p n)int mod_fact(int n,int p,int& e){ e=0; if(n==0) return 1; //计算p的倍数的部分 int res=mod_fact(n/p,p,e); e+=n/p; //由于(p-1)!=-1,因此(p-1)!^(n/p)只需要知道n/p的奇偶性就可以计算了。 if(n/p%2!=0) return res*(p-fact[n%p])%p; return res*fact[n%p]%p;}//求C_n^k mod p O(log_p n)int mod_comb(int n,int k,int p){ if(n<0||k<0||n<k) return 0; int e1,e2,e3; int a1=mod_fact(n,p,e1),a2=mod_fact(k,p,e2),a3=mod_fact(n-k,p,e3); if(e1>e2+e3) return 0; return a1*mod_inverse(a2*a3%p,p)%p;}int main(){ return 0;}
阅读全文
0 0
- Lucas 定理
- Lucas 定理
- lucas定理
- Lucas定理
- Lucas 定理
- Lucas 定理
- Lucas 定理
- Lucas 定理
- Lucas定理
- lucas定理
- lucas定理
- Lucas定理
- Lucas定理
- Lucas 定理。。。
- lucas定理
- Lucas定理
- lucas定理
- Lucas定理
- Eclipse svn提交代码的一般步骤(对比、解决冲突、更新、提交)
- BAT 招聘iOS职位要求
- js 集合的交集、补集、差集、去重
- 数据库操作语句
- java爬虫中Element类中各方法的使用
- Lucas定理
- swift enum高级用法
- JDBC连接池 —— c3p0
- linux黑屏重启 caffe 训练深度学习网络crfasrnn deeplab
- Socker通信
- 51Nod-1227-平均最小公倍数
- Mac上画图工具
- 文章标题
- leetcode 21. Merge Two Sorted Lists