【HPU】[1731]QAQ的问题
一道排列组合的题目
先从阵地里选出哪几个阵地
然后把士兵让进去 允许空
由排列组合的知识得
C(n+m-1,m-1)
需要注意的是%777
所以使用数组
运用 CMI[i][j]=CMI[i-1][j-1]+CMI[i-1][j]
来计算CMI比较好
#include<stdio.h>
int CMI[101][101];
void GetCMI() {
for(int i=0; i<=100; i++)
CMI[i][0]=1;
for(int i=1; i<=100; i++) {
for(int j=1; j<=i; j++) {
CMI[i][j]=(CMI[i-1][j-1]+CMI[i-1][j])%777;
}
}
}
int main() {
GetCMI();
int N,M;
while(scanf("%d %d",&N,&M)!=EOF) {
int sum=0;
for(int i=1; i<=M; i++) {
sum=(sum+CMI[M][i]*CMI[N+i-1][i-1])%777;
}
printf("%d\n",sum);
}
return 0;
}
题目地址:【HPU】[1731]QAQ的问题