错排公式的推导可以看:不容易系列之(4)——考新郎

ll sum[30];
for(int i=3;i<=25;++i)
        sum[i]=(i-1)*(sum[i-1]+sum[i-2]);