exLucas学习笔记

Tags:数学




写下抛硬币和超能粒子炮改

洛谷模板代码如下

#include<iostream>
#define ll long long
using namespace std;
void exgcd(int a,int b,int &x,int &y)
{
if(b==0) {x=1;y=0;return;}
exgcd(b,a%b,y,x);y-=a/b*x;
}
struct ex_lucas
{
int p,pk,jc[1000001];
void init()
{
for(int i=jc[0]=1;i<=pk;i++)
jc[i]=1ll*jc[i-1]*(i%p?i:1)%pk;
}
int ksm(int x,ll k)
{
int s=1;for(;k;k>>=1,x=1ll*x*x%pk)
if(k&1) s=1ll*s*x%pk;return s;
}
int inv(int a)
{
int x,y;exgcd(a,pk,x,y);
x=(x%pk+pk)%pk;return x;
}
int mul(ll n)
{
int s=1;
for(;n;n/=p) s=1ll*s*ksm(jc[pk],n/pk)%pk*jc[n%pk]%pk;
return s;
}
void Getp(ll n,int op,int &k) {for(;n;n/=p) k+=op*n/p;}
int C(ll n,ll m)
{
int a=mul(n),b=mul(m),c=mul(n-m),k=0;
Getp(n,1,k);Getp(m,-1,k);Getp(n-m,-1,k);
return 1ll*a*inv(b)%pk*inv(c)%pk*ksm(p,k)%pk;
}
}a[10];
ll n,m,p,x,tt,ans,A[11],B[11];
int exCRT()
{
int P=A[1],R=B[1];
for(int i=2;i<=tt;i++)
{
int x,y,np=A[i]*P;exgcd(P,A[i],x,y);
x=(1ll*x*(B[i]-R)%np+np)%np;
R=(1ll*x*P%np+R+np)%np;P=np;
}
return R;
}
int main()
{
cin>>n>>m>>p;x=p;
for(int i=2;i*i<=x;i++)
if(x%i==0)
{
a[++tt].p=i;a[tt].pk=1;
while(x%i==0) a[tt].pk*=i,x/=i;
}
if(x>1) ++tt,a[tt].p=a[tt].pk=x;
for(int i=1;i<=tt;i++)
a[i].init(),B[i]=a[i].C(n,m),A[i]=a[i].pk;
ans=exCRT();
cout<<ans<<endl;
}

exLucas学习笔记的更多相关文章

  1. $exLucas$学习笔记

    本来不打算写了的,,,但是感$jio$理解起来还是有点儿难度的来着,,,$so$还是瞎写点儿趴$QAQ$ $exLucas$主要有三步: 1)唯一分解$mod$并预处理$p^{k}$以内的阶乘 2)计 ...

  2. 「ExLucas」学习笔记

    「ExLucas」学习笔记 前置芝士 中国剩余定理 \(CRT\) \(Lucas\) 定理 \(ExGCD\) 亿点点数学知识 给龙蝶打波广告 Lucas 定理 \(C^m_n = C^{m\% m ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  7. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  8. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  9. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

随机推荐

  1. 进程间协作---wait,notify,notifyAll

    转自牛客网的一篇评论,解释的十分详细 在 Java 中,可以通过配合调用 Object 对象的 wait() 方法和 notify()方法或 notifyAll() 方法来实现线程间的通信.在线程中调 ...

  2. iOS设计模式 - 责任链

    iOS设计模式 - 责任链 原理图 说明 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链 ...

  3. sudo实例--企业生产环境用户权限集中管理方案实例

    根据角色的不同,给不同的用户分配不同的角色1.创建初级工程师3个,网络工程师1个,中级工程师1个,经理1个      #  批量创建用户 for user in chuji{01..03} net01 ...

  4. php面试题2018

    一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配 ...

  5. Centos下防止ssh暴力破解密码

    参考文章地址:https://yq.aliyun.com/ziliao/48446 https://www.cnblogs.com/lsdb/p/7095288.html 1.收集 /var/log/ ...

  6. 一、BOM 二、DOM

    一.BOM(window对象)###<1>window属性对象 window.location 当前浏览器的地址对象 window.history 浏览器访问过的地址对象 window.o ...

  7. October 07th 2017 Week 40th Saturday

    Knowledge is a treasure but practice is the key to it. 知识是宝藏,但实践才是打开它的钥匙. Experience often comes fro ...

  8. SAP CX Upscale Commerce : SAP全新推出的电商云平台

    大家好,我是Andy Chen,是SAP成都研究院年轻的SAP CX Upscale Commerce (后面将会以Upscale简称)开发团队的一名产品经理.CX的全称是Customer Exper ...

  9. idea html热部署

    IDEA SpringBoot 热部署+html修改无需make自动刷新 收藏 HeyS1 发表于 3个月前 阅读 310 收藏 2 点赞 0 评论 0 特邀IBM大咖的主题沙龙,5月20日·北京·3 ...

  10. P2418 yyy loves OI IV

    题目背景 某校2015届有两位OI神牛,yyy和c01. 题目描述 全校除他们以外的N名学生,每人都会膜拜他们中的某一个人.现在老师要给他们分宿舍了.但是,问题来了: 同一间宿舍里的人要么膜拜同一位大 ...