HDU2048 HDU2049 组合数系列 错排

来源:互联网 发布:文言虚词乎的用法 编辑:程序博客网 时间:2024/05/17 18:23
#include<cstdio>#include<cstdlib>#include<iostream>#include<memory.h>#include<cmath>using namespace std;long long s[21],c[21];void _gets(){s[0]=0;s[1]=0;s[2]=1;    for(i=3;i<=20;i++)     s[i]=(i-1)*(s[i-1]+s[i-2]);}void _getc(){ c[1]=1;  for(i=2;i<=20;i++)      c[i]=c[i-1]*i;}int main(){int i,n,m;   _gets();   _getc();cin>>n;    while(n--){   cin>>m;   printf("%.2lf%%\n",(double)s[m]/c[m]*100.00);    }    return 0;}


#include<cstdio>#include<cstdlib>#include<iostream>#include<memory.h>#include<algorithm>#include<cmath>using namespace std;long long  s[60],c[60][60];void _gets(){s[0]=0;s[1]=0;s[2]=1;    for(int i=3;i<=20;i++)     s[i]=(i-1)*(s[i-1]+s[i-2]);}void _getc(){for(int i=1;i<=20;i++){        c[i][0]=1;        for(int j=1;j<=i;j++)         c[i][j]=c[i][j-1]*(i-j+1)/j;    }}int main(){    int n,T,m;    s[1]=0;s[2]=1;    _gets();     _getc();    cin>>T;    while(T--){        cin>>n>>m;        long long ans=c[n][m];        ans*=s[m];        cout<<ans<<endl;    }    return 0;}