这题有点怪怪的感觉
自己想了,但是完全思路不搭边 上网搜了各种错排神马的...
恍然大悟 原来之前做
#include<iostream>
using namespace std;
int main(){
long long a[26][2]={{1,1},{1,0},{2,1},{6,2}};
for(int i=4;i<=25;i++){
a[i][0]=a[i-1][0]*(i+1);
a[i][1]=(a[i-1][1]+a[i-2][1])*(i-1);
}
int n;//
while(cin>>n){
if(n==0)
break;
long long sum=0;
int j;
for(j=n/2;j>=0;j--){
long long c=a[j][1];int x; // 还是在 long long 这个地方卡了一下
long long s=1;
for(x=0;x<j;x++){
s*=(n-x); // 又是排列组合 看来以后还得碰上
s/=(x+1);
}
sum+=c*s;//要注意错排的是除去猜中后的少数女生 也是绝对存在的
// 而不是 sum+=(a[j][0]-c*s) 我就是发现这个问题才最终hash的
}
cout<<sum<<endl;
}
return 0;
}
