补发博客
就是求C(m+n,m);
读代码吧少年!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<climits>
#include<list>
#include<stack>
#include<cmath>
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
#define uLL unsigned long long
using namespace std;
uLL C(uLL n,uLL m)
{
uLL ans=1;
m=min(n-m,m);//一定要是最小的,否则可能超时
for(uLL i=1;i<=m;i++)
ans=ans*(n-m+i)/(i);
//分子分母都从小往大乘,不会出现精度问题
return ans;
}
int main()
{
unsigned long long n,m;
while(cin>>n>>m,n!=0||m!=0)
{
printf("%llu\n",C(m+n,n));
}
}