exLucas学习笔记

Tags:数学




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

洛谷模板代码如下

  1. #include<iostream>
  2. #define ll long long
  3. using namespace std;
  4. void exgcd(int a,int b,int &x,int &y)
  5. {
  6. if(b==0) {x=1;y=0;return;}
  7. exgcd(b,a%b,y,x);y-=a/b*x;
  8. }
  9. struct ex_lucas
  10. {
  11. int p,pk,jc[1000001];
  12. void init()
  13. {
  14. for(int i=jc[0]=1;i<=pk;i++)
  15. jc[i]=1ll*jc[i-1]*(i%p?i:1)%pk;
  16. }
  17. int ksm(int x,ll k)
  18. {
  19. int s=1;for(;k;k>>=1,x=1ll*x*x%pk)
  20. if(k&1) s=1ll*s*x%pk;return s;
  21. }
  22. int inv(int a)
  23. {
  24. int x,y;exgcd(a,pk,x,y);
  25. x=(x%pk+pk)%pk;return x;
  26. }
  27. int mul(ll n)
  28. {
  29. int s=1;
  30. for(;n;n/=p) s=1ll*s*ksm(jc[pk],n/pk)%pk*jc[n%pk]%pk;
  31. return s;
  32. }
  33. void Getp(ll n,int op,int &k) {for(;n;n/=p) k+=op*n/p;}
  34. int C(ll n,ll m)
  35. {
  36. int a=mul(n),b=mul(m),c=mul(n-m),k=0;
  37. Getp(n,1,k);Getp(m,-1,k);Getp(n-m,-1,k);
  38. return 1ll*a*inv(b)%pk*inv(c)%pk*ksm(p,k)%pk;
  39. }
  40. }a[10];
  41. ll n,m,p,x,tt,ans,A[11],B[11];
  42. int exCRT()
  43. {
  44. int P=A[1],R=B[1];
  45. for(int i=2;i<=tt;i++)
  46. {
  47. int x,y,np=A[i]*P;exgcd(P,A[i],x,y);
  48. x=(1ll*x*(B[i]-R)%np+np)%np;
  49. R=(1ll*x*P%np+R+np)%np;P=np;
  50. }
  51. return R;
  52. }
  53. int main()
  54. {
  55. cin>>n>>m>>p;x=p;
  56. for(int i=2;i*i<=x;i++)
  57. if(x%i==0)
  58. {
  59. a[++tt].p=i;a[tt].pk=1;
  60. while(x%i==0) a[tt].pk*=i,x/=i;
  61. }
  62. if(x>1) ++tt,a[tt].p=a[tt].pk=x;
  63. for(int i=1;i<=tt;i++)
  64. a[i].init(),B[i]=a[i].C(n,m),A[i]=a[i].pk;
  65. ans=exCRT();
  66. cout<<ans<<endl;
  67. }

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. MySQL Bug导致异常宕机的分析流程

    原文链接:http://click.aliyun.com/m/42521/ 摘要: 本文主要通过一个bug来记录一下如何分析一个MySQL bug的崩溃信息. 版本:Percona 5.7.17-11 ...

  2. Oracle恢复删除数据

    可以通过SCN和时间戳两种方法来恢复. 一.通过SCN恢复删除且已经提交的数据 查询当前SCN select current_scn from v$database; 如图: 缩小范围进行查询 查询到 ...

  3. 审计系统---堡垒机python下ssh的使用

    堡垒机python下ssh的使用 [堡垒机更多参考]http://www.cnblogs.com/alex3714/articles/5286889.html [paramiko的Demo实例]htt ...

  4. springmvc常用的组件,注解,跳转

    路径映射 XXXHandlerMapping 随开发配置越来越多 注解到java代码中来简化xml配置 请求到哪个Controller 控制器bean Controller 随着开发配置越来越多 注解 ...

  5. November 16th 2016 Week 47th Wednesday

    Success is falling nine times and getting up ten. 成功就是哪怕跌倒九次,也要在第十次爬起来. For most of us, we may choos ...

  6. .split("\n") 和 .strip("我是诗人的感叹")

    s10='''诗人 学者 作家 # 这里面是有换行     "\n"    的,    要想变成一行, 删除strip不行,要用 split分开,这样就能变成一个列表,里面是各个字 ...

  7. U-Mail:多方面因素避免EDM邮件进垃圾箱

    有很多做邮件营销的企业客户给U-Mail来电或来函咨询一件困扰他们的事:群发邮件时,要怎么样才能降低被收件人列入垃圾邮件的概率呢?其实关于这个问题,U-Mail小编已经请资深营销专家解答过多次了,经常 ...

  8. nginx alias

    A path to the file is constructed by merely adding a URI to the value of the root directive. If a UR ...

  9. php 分享一个object(stdclass)转数组的函数

    经常调用一个借口之后 返回的内容是json串,利用php函数json_decode() 解析json串之后得到的 数据类型为object(stdclass) 这是一个对象,要取其中的内容也可以 取得, ...

  10. JQuery Mobile+JS实现智能浮动定位导航条

    实现原理 主要用到几个知识点: 什么是scrollTop? CSS position定位 判断是否为IE6浏览器 元素相对于窗口的距离 原理:1,浏览器向下滚动时,当document的scrollTo ...