http://codeforces.com/problemset/problem/131/C
直接暴力出来的。
注意一点就行,连乘的时候数据会溢出,所以要乘一个然后再跟着除一个。这个题就解决了。
AC代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,m,t,i,j,p,q;
__int64 a,b,sum;
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
sum = 0;
for(i = 4; i <= n; i++) //男孩数量
{
for(j = 1; j <= m; j++) //女孩数量
{
if(i+j == t)
{
// printf("%d %d\n",i,j);
a = b = 1;
if(i >= n/2)
{
q = 1;
for(p = n; p > i; p--)
{
a = a*p;
a = a/q;
q++;
}
// printf("%I64d\n",a);
}
else
{
q = 1;
for(p = n; p > n-i; p--)
{
a = a*p;
a = a/q;
q++;
}
// printf("%I64d\n",a);
}
if(j >= m/2)
{
q = 1;
for(p = m; p > j; p--)
{
b = b*p;
b = b/q;
q++;
}
// printf("%I64d\n",b);
}
else
{
q = 1;
for(p = m; p > m-j; p--)
{
b = b*p;
b = b/q;
q++;
}
// printf("%I64d\n",b);
}
sum = sum+a*b;
// printf("%I64d\n",sum);
}
}
}
printf("%I64d\n",sum);
}
return 0;
}