计算系数
给出一个多项式(x+y)^K,询问x^n * y^m的系数
输入两个数n, m。 K为n+m的和。n,m均不超过100
因为系数可能非常大,所以要求输出模10007后的结果
样例输入
1 2
样例输出
3
一开始傻傻地以为可以用二项式公式,结果直接溢出报错,开longlong也是不行的,然后才知道有杨辉三角与二项式定理的性质,
杨辉三角曾经打过,所以知道方法:想像杨辉三角左对齐,用二维数组处理,
但是打代码的时候注意数组越界问题,注意各数值的范围,是否有=,是否有+1
1 #include<stdio.h> 2 int main() { 3 int n, m; 4 long long a[205][205]; 5 a[0][0] = 1; 6 scanf("%d %d", &n, &m); 7 int num = n + m, i, j; 8 for (i = 1; i < num + 1; i++) { // 观察了杨辉三角后发现这里要+1 9 for (j = 1; j < i + 1; j++) { // 想像杨辉三角左对齐,用二维数组处理 10 a[i][0] = 1; 11 a[i][i] = 1; 12 if (i > 1 && j >= 1) { 13 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 14 } 15 a[i][j] %= 10007; 16 } 17 } 18 printf("%lld\n", a[m + n][n]); 19 return 0; 20 }