1.用long long开数组容易爆内存,但是过程中虽然取模但是两数相乘还是容易超范围,所以需要强制转化
ll temp;
int res[maxn];
temp = (ll)(i - 1) * (res[i - 1] + res[i - 2]) % mod;
res[i] = temp;
//而不是
ll res[i];
res[i] = (i - 1) * (res[i - 1] + res[i - 2]) % mod;
2.n个人都不在原来的位置的排序方法
int res[maxn] = { 1,0,1 };
void rest()
{
int i;
ll temp;
for (i = 3; i <= maxn; i++)
{
temp = (ll)(i - 1) * (res[i - 1] + res[i - 2]) % mod;
res[i] = temp;
}
}