dp对组合数的预处理代码部分:自己在草稿本上一个一个的写一下,其实就是杨辉三角;这样运行过后,dp内就是组合数了,比如C(n,m)在m里取n个的取法就是dp[m][n]。
for(int i=0;i<=2000;i++){
dp[i][1]=i%1007;
dp[i][0]=dp[i][i]=1;
}
for(int i=2;i<=2000;i++){
for(int j=1;j<=i;j++){
dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])%1007;
}
}
快速幂取模模板:还是自己一步一步模拟比较好。
long long result(long long a,long long b,long long m)
{
long long d,t;
d=1;
t=a;
while (b>0)
{
if (b%2==1)
d=(d*t)%m;
b/=2;
t=(t*t)%m;
}
return d;
}
②
int mod_exp(int a, int b, int c) //快速幂取余a^b%c
{
int res, t;
res = 1 % c;
t = a % c;
while (b)
{
if (b & 1)
{
res = res * t % c;
}
t = t * t % c;
b >>= 1;
}
return res;
}