【题解】[牛客OI周赛4-提高组]B.最后的晚餐 组合数+容斥原理
#include<cstdio>
typedef long long ll;
const int mod=1e9+7;
int n;
ll ans=1,a,b,c;
int main()
{
scanf("%d",&n);
if(n==1){puts("0");return 0;}
a=1;b=n-2;
for(int i=2;i<=n;i++)
c=(b*(ll)(n+i-3)+a*(ll)(i-1<<1))%mod,a=b,b=c;
for(int i=2;i<n;i++)
ans=ans*(ll)i%mod;
ans=ans*c%mod;
printf("%lld\n",ans);
return 0;
}
总结
数学题