对于C(n,k)取模

2016.1.26

法一:直接根据定义式,求乘法逆元即可

法二:借助关于n!mod p,那么根据C(n,k)的定义式并结合乘法逆元即可求解。

法三:借助卢卡斯定理求解

特别注意:在C(n,k)模p等于0的情况下,上述方法均不奏效,所以需要特判。

特判方法举例:如在采取法一时,分子中因子p的个数为e1,分母中因子p的个数为e2,那么e1=e2时模p不得0,可继续进行;若e1>e2,则模p为0,直接返回0.

时间: 2024-10-12 08:24:39

对于C(n,k)取模的相关文章

整除k的最大连续子区间(前缀和取模)(2017美团笔试)

题意:一个数n,给出n个数,再给一个数k.求能整除k的连续区间和所在区间的最大长度.bc85场1001的升级版. 题解:刚拿到题的时候没看清是连续区间,就瞎想dp.发现连续区间后,想尺取法,发现这道题是离散的,没法尺取,也没法二分. 正解应该是前缀和取模.若(sum[j]-sum[i])%k==0则区间[i,j]的和是能整除k的.注意,前缀和的第一项是0. 预处理完成后,考虑如何求最大区间长.从前往后扫一次,记录每个值最早出现的位置.从后往前扫一次,以便记录每个值最后出现的位置.当值为0时,则记

51NOD 1116 K进制下的大数(字符串取模 + 枚举)

传送门 1116 K进制下的大数 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数在K进制下是K - 1的倍数.现在由你来求出这个最小的进制K. 例如:给出的数是A1A,有A则最少也是11进制,然后发现A1A在22进制下等于4872,4872 mod 21 = 0,并且22是最小的,因此输出k = 22(大数的表示中A对应10,Z对应35). Input 输入大数对应的字符串S

POJ 3233-Matrix Power Series( S = A + A^2 + A^3 + … + A^k 矩阵快速幂取模)

Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 20309   Accepted: 8524 Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + - + Ak. Input The input contains exactly one test cas

CodeForces Gym 100935D Enormous Carpet 快速幂取模

Enormous Carpet Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Gym 100935D Description standard input/outputStatements Ameer is an upcoming and pretty talented problem solver who loves to solve problems using computers.

连续取模

哈理工团体赛:problem E . Mod Kim刚刚学会C语言中的取模运算(mod).他想要研究一下一个数字A模上一系列数后的结果是多少.帮他写个程序验证一下. Input 第一行一个整数T代表数据组数. 接下来T组数据,第一行一个整数n,接下来n个数字ai 接下来一行一个整数m,接下来m个数字bi Output 对于每个bi,输出bi%a1%a2%...%an Sample Input Output 1 4 10 9 5 7 5 14 8 27 11 25 4 3 2 1 0 Hint 在

组合数取模(转载)

本文转自:http://blog.csdn.net/skywalkert/article/details/52553048 0. 写在前面 在程序设计中,可能会碰到多种类型的计数问题,其中不少涉及到组合数的计算,所以笔者写下这么一篇文章,期望能解决一些常规的组合数求模问题.以下部分内容改编自AekdyCoin的<组合数求模>,而且为了感谢他对(懵懂的)笔者的启发,这篇文章的标题与其文章相同.另外,感谢Picks将多项式运算的技巧在中国进行推广,感谢51nod提供了许多有趣的数论题目,感谢fot

codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数

对于这道题目以及我的快速幂以及我的一节半晚自习我表示无力吐槽,, 首先矩阵乘法和快速幂没必要太多说吧,,嗯没必要,,我相信没必要,,实在做不出来写两个矩阵手推一下也就能理解矩阵的顺序了,要格外注意一些细节,比如快速幂时ans矩阵的初始化方式,快速幂的次数,矩阵乘法过程中对临时矩阵的清零,最后输出结果时的初始矩阵...矩阵快速幂好理解但是细节还是有点小坑的.. 下面就是满满的槽点,,高能慎入!!! 对于这个题目要求矩阵过程中对m取模,结果对g取模,我表示难以接受,,上来没看清题直接wa19个点,另

HDU 5895 矩阵快速幂+高次幂取模

HDU 5895 Mathematician QSC 题意:已知f(n)=2*f(n-1)+f(n-2), g(n)=∑f(i)²(0<=i<=n), 给出n,x,y,s, 求x^(g(n*y))%(s+1); 思路:OEIS查到了g(n)=f(n)*f(n+1)/2, f(n)可以用矩阵快速幂求得, 有一个定理可以用于高次幂取模 x^n %k=x^(n%phi(k)+phi(k)) %k, 此处phi(x)为欧拉函数,但是在对幂次取模时存在一个除2, 又因为(a/b)%k=(a%bk)/b,

Raising Modulo Numbers 取模+快速幂

Raising Modulo Numbers 题目地址:http://poj.org/problem?id=1995 Description People are different. Some secretly read magazines full of interesting girls' pictures, others create an A-bomb in their cellar, others like using Windows, and some like difficult