题目:
解题思路:很明显,这道题就是我们高中时经常接触的组合排列问题
下面对这种取球模型的组合排列问题进行总结:
通过分析查表知道,这题题解即为C(m+n-1,m);
然而,直接根据组合C公式用阶乘求解会出现两个超大数相乘爆ll的情况
高中时我们学习过一个递推公式: C(n+1,m) = C(n,m) + C(n,m-1);
我们由此生发出递推的想法.
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll C[100][100];
int main()
{// C(n+m-1,m)
C[1][1]=1;
for(ll i=1;i<100;i++) C[i][0]=1;
for(ll i=2;i<100;i++)
for(ll j=1;j<=i;j++)
{
C[i][j]=C[i-1][j]+C[i-1][j-1];
}
ll t;
cin>>t;
while(t--)
{
ll n,m;
cin>>n>>m;
cout<<C[n+m-1][m]<<endl;
}
}
相似题目:
HDU2200