原题地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=451
主要思路在:http://zhidao.baidu.com/question/2783254.html
部分思路在代码里,自己看吧。。
#include<stdio.h> int f(int n,int m) //计算从n个人中选m个人(不排序)的情况 { long long max=1,min=1,a,b,c; for(a=n,c=m;a>=m,c>0;a--,c--) { max=max*a; min=min*c; } b=max/min; return b; } int main() { long long a,b,n,m,c; long long yi[25]={0,0,1};//计算在a个人写a个纸条,a个人都去拿纸条,但都没有拿到自己的纸条的情况 for(a=3;a<=20;a++) yi[a]=(a-1)*(yi[a-1]+yi[a-2]);// while(scanf("%d%d",&n,&m)!=EOF) { printf("%lld\n",f(n,m)*yi[m]);// f(n,m)yi[m]就是所求结果。。 } }
现在再看这个题,比较水吧。。