/ Vijos / 讨论 / 问答 /

如何处理C(n,r)mod m ,n很大,中的r!

如何处理C(n,r)mod m ,n很大,中的 r!, 也就是如何把 r!除去,有好方法么,各位?

6 条评论

  • @ 2015-04-28 19:58:20

    求 m 的范围和具体要求的式子………………

  • @ 2015-04-28 07:13:10

    没听懂...Lucas定理可以吗?

  • @ 2015-04-16 19:43:03

    orz楼下,看不懂

    • @ 2015-04-17 12:30:09

      orz紫名,果然是我的表达能力太差了,去看思路来源吧- -。

  • @ 2015-04-16 13:03:39

    0.写一个函数mul(a,b),用快速幂求出a^b mod m的值。
    1.开两个数组a和b,a[i]代表要求这个数的几次幂,b[i]是这个数的**某个质因子**。
    2.将a数组设为你想要的值(-1次代表除以这个数),用筛选法求出b数组。
    3.从大到小遍历a数组,对于每个i,如果这个数是质数(即b[i]=i)那么ans:=(ans*mul(i,a[i])) mod m 否则a[i div b[i]]:=a[i div b[i]]+b[i];a[b[i]]:=a[b[i]]+a[i](理由是i^a[i]=(i/k)^a[i]*k^a[i])
    4.输出ans就可以了。
    (思路来自于这里

    • @ 2015-04-18 15:23:55

      谢谢,你知道怎么快速求阶乘么?n<10^9

  • @ 2015-04-15 12:57:16

    不是

  • @ 2015-04-13 17:13:22

    m是质数吗?

  • 1