解题思路:对于每一对恰好前后颠倒的排列(比如1 3 2 4与4 2 3 1),其价值和为n*(n-1)/2,可以自己尝试一下,会发现很好证明。一共有n!个排列,也就是n!/2对排列,所以答案就是n*(n-1)/2*n!/2对998244353取模
注意事项:无
参考代码:
#include
using namespace std;
#define mod 998244353LL
typedef long long ll;
ll n;
ll ans=1;
int main(){
scanf("%lld",&n);
ans*=n*(n-1)/2;
ans%=mod;
for(int i=3;i<=n;i++){
ans*=i;
ans%=mod;
}
printf("%lld",ans);
//system("pause");
return 0;
}
0.0分
14 人评分
C语言程序设计教程(第三版)课后习题12.5 (C语言代码)浏览:822 |
震宇大神的杀毒软件 (C++代码)浏览:1115 |
printf基础练习2 (C语言代码)浏览:567 |
【出圈】 (C语言代码)浏览:553 |
简单的a+b (C++语言代码)浏览:853 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:818 |
关于C语言变量位置的问题浏览:272 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:820 |
sizeof的大作用 (C语言代码)浏览:1024 |
局部变量作函数返回值的问题浏览:965 |