题目链接:
此题考查错排公式,组合数运算,正确的数目用组合,错误的情况用错排。
错排公式为:F(n)=(n-1)*(F(n-1)+F(n-2));
F(1)=0;F(2)=1;……
AC 代码为:
#includeusing namespace std;__int64 a[13]={ 0,0,1};//只需要定义到a[13]即可,因为最大为25void fun(){ for(int i=3;i<=12;i++) a[i]=(i-1)*(a[i-1]+a[i-2]); }int cnm(int n,int m){ int s=1; for(int i=1;i<=m;i++) s=s*(n--)/i; return s;}int main(){ //freopen("d:\\1.txt","r",stdin); fun(); int n; while(scanf("%d",&n)!=EOF&&n) { __int64 s=0; //__int64类型 if(n<=3)cout<<1<