C#:实现计算nCr模p
以下是C#计算nCr模p的源代码:
复制
using System;
class Program {
static void Main(string[] args) {
int n = 10; // n的值
int r = 3; // r的值
int p = 1000000007; // p的值
Console.WriteLine(nCrModp(n, r, p));
}
static int nCrModp(int n, int r, int p) {
if(r > n - r) {
r = n - r;
}
int[] C = new int[r + 1];
C[0] = 1;
for(int i = 1; i <= n; i++) {
for(int j = Math.Min(i, r); j > 0; j--) {
C[j] = (C[j] + C[j - 1]) % p;
}
}
return C[r];
}
}
其中,nCrModp方法接受三个参数:整数n,整数r和整数p,并返回nCr mod p的值。该方法首先将r的值设置为n-r(如果r大于n-r)。然后,使用动态规划计算C[n][r]的值。