给定n,k,请你计算组合数C(n,k)。
输入格式2个整数n,k(0<=k<=n<=50)。空格隔开。
输出格式1个整数,代表C(n,k)的值
样例输入4 2样例输出
6问题提示
0<=k<=n<=50
结果可能很大
样例理解1
0 0 0 01 1
0 0 01 2 1
0 01 3 3 1
01 4 6 0 1
杨辉三角
(杨辉:你礼貌吗)
所以公式为:C(i,j)=C(i-1,j)+C(i-1,j-1)
直接二维数组
#includeusing namespace std; long long a[1000][1000],n,m; int main() { cin>>n>>m; for(int i=0;i<=n;i++) { a[i][0]=1; a[i][i]=1; } //赋值,毕竟是动规 for(int i=2;i<=n;i++) { for(int j=1;j<=m;j++) { if(i F2
通项公式:n-m+1/1+n-m+2/2+n-m+3/3+……+n/m
所以直接for里套(ans*=(n-m+i)/i)
#includeusing namespace std; long long n,m; int main() { cin>>n>>m; long long ans=1; for(int i=1;i<=m;i++) { ans=ans*(n-m+i)/i;//注意n-m+1可能不是i的倍数,但ans一定是i的倍数,但*=算的是后面一段,所以要改成ans=ans*…… } cout<



