@sensitive-cs
        
        2016-10-06T04:47:01.000000Z
        字数 619
        阅读 957
    从n个男生中选至少4人,从m个女生中选至少1人,满足m和n的和为t,求多少种选法。
组合的简单问题。 
满足上述条件的情况下,对每一种不同的情况,男生的组合数与女生的组合数相乘,最后相加。
参考了晴转多云同学的代码后,暴力算阶乘的绝对会溢出,所以算组合数的时候是有技巧的,具体技巧参考代码中的计算组合数的函数。当然long long是必须的。
#include <stdio.h>long long bine(int max,int min);int main(){long long n,m,t;while (scanf("%I64d%I64d%I64d",&n,&m,&t) != EOF){long long i,j;long long cal = 0;for (i = 4;i <= n;i++)for (j = 1;j <= m;j++){if ((i + j) == t){long long _x = 0,_y = 0;if (i == n)_x = 1;else_x = bine(n,i);if (j == m)_y = 1;else_y = bine(m,j);cal += (_x * _y);}}printf("%I64d\n",cal);}return 0;}long long bine(int max,int min){int i,j;long long temp = 1;for (i = max,j = 1;j <= min;j++,i--)temp = temp * i / j;return temp;}