题意很好理解,只是数据有点大,是用排列组合的知识,为了减小数据量,阶乘采用间接求得!注意下就可以了,还有对double数据要采用四舍五入的方法。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
void fun(unsigned int n,unsigned int m)
{
double s=1.0,t;
unsigned int i,b;
b=n>m?m:n;
for(i=1; i<=b; i++)
{
t=((1.0*(n+m+1-i))/(1.0*(b+1-i)));
s=s*t ;
}
s+=0.5;
printf("%u\n",(unsigned int)s);
}
int main()
{
unsigned int n,m;
while(1)
{
scanf("%u%u",&n,&m);
if(n==0 && m==0)
break;
fun(n,m);
}
return 0;
}