计算系数

给出一个多项式(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 }

 

posted on 2016-01-06 21:32  _阿赞  阅读(281)  评论(0编辑  收藏  举报