The World is a Theatre codeforces131c

题意:n个男生和m个女生选t个人,至少4男1女

提示:要用long long类型,不然会爆

方法一:直接排列组合

#include <stdio.h>#include <string.h>typedef long long ll;ll doo(ll i,ll n){ll a=1;for(ll l=1;l<=i;l++){a*=n-l+1;a/=l;//一边乘一边除,,否则会爆,可以除尽的}return a;}int main(){ll n,m,t;ll all;while(scanf("%I64d%I64d%I64d",&n,&m,&t)!=-1){all=0;for(ll i=4;i<=t-1;i++){if((t-i)>m)continue;if(i>n)break;//printf("%I64d %I64d %I64d %I64d\n",i,t-i,n,m);all+=doo(i,n)*doo(t-i,m);}printf("%I64d\n",all);}return 0;}方法二:因为数值小,可以用dp

#include <stdio.h>#include <string.h>typedef long long ll;ll dp[35][35];int main(){ll n,m,t;ll all;dp[0][0]=0;for(int i=1;i<=30;i++){dp[0][i]=1;dp[i][i]=1;}for(int i=1;i<=30;i++)for(int j=1;j<i;j++)dp[j][i]=dp[j-1][i-1]+dp[j][i-1];while(scanf("%I64d%I64d%I64d",&n,&m,&t)!=-1){all=0;for(int i=4;i<=t-1;i++){if((t-i)>m)continue;if(i>n)break;all+=(dp[i][n]*dp[t-i][m]);}printf("%I64d\n",all);}return 0;}

dp[0][0]=0;for(int i=1;i<=30;i++){dp[0][i]=1;dp[i][i]=1;}for(int i=1;i<=30;i++)for(int j=1;j<i;j++)dp[j][i]=dp[j-1][i-1]+dp[j][i-1];

明天的希望,让我们忘了今天的痛苦

The World is a Theatre codeforces131c

相关文章:

你感兴趣的文章:

标签云: