说起来真惭愧,这题刚开始看没什么思路,然后也没怎么仔细想就直接看别人思路了。
思路是这样的:在n个人中找m个人,然后就变成了插板问题。
代码如下:
#include"stdio.h" __int64 cal(__int64 m,__int64 n) { __int64 s=1,i; for(i=1;i<=m;i++) s=s*(n-i+1)/i; return s; } int main( ) { __int64 n,sum,i; while(~scanf("%I64d",&n)) { sum=0; for(i=2;i<=n;i++) sum+=(i-1)*cal(i,n); printf("%I64d\n",sum); } return 0; }