题目:计算系数
思路:
先推个杨辉三角,再求个快速幂。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 1000
#define md 10007
#define ll long long
#define read(x) scanf("%d",&x)
int a,b,k,n,m;
int f[maxn+5][maxn+5];
int mi(int x,int y) {
x%=md;
int ans=1;
while(y) {
if(y&1) ans=ans*x%md;
y>>=1,x=x*x%md;
}
return ans;
}
int main() {
read(a),read(b),read(k),read(n),read(m);
f[0][0]=1;
for(int i=1;i<=k;i++) {
f[i][0]=1;
for(int j=1;j<=i;j++) {
f[i][j]=(f[i-1][j]+f[i-1][j-1])%md;
}
}
int ans=f[k][m];
ans=((ans*mi(a,n))%md*mi(b,m))%md;
printf("%d",ans);
return 0;
}

本文介绍了一种计算组合数的算法,通过构建杨辉三角并结合快速幂运算,高效地解决了涉及大数的组合计算问题。代码使用C++实现,展示了如何在限定条件下计算特定的组合数。
7752

被折叠的 条评论
为什么被折叠?



