对于1~n的全排列
1. 其中组合对数
为n*(n-1)/2
;
eg:1~3中组合分别为{1,2} {1,3} {2,3}
不分前后
,前后
概率为1/2
2. 全排列共有n!
种,所以题解为 n! * n * (n-1) / 2 / 2
另:要求% mod, 但有除法所以用乘法逆元来算.
#include<iostream>
using namespace std;
typedef long long ll;
const int mod = 998244353;
int n;
ll res;
ll qmi(int a,int b,int m)
{
ll tmp = 1;
while(b)
{
if(b & 1) tmp = (ll) tmp * a % m;
a = (ll) a * a % m;
b >>= 1;
}
return tmp;
}
int main()
{
cin>>n;
res =(ll) n * (n-1) % mod * qmi(2,mod - 2,mod) % mod;//1~n总对数
ll ans = 1;
for(int i = 1; i <= n ; i ++ )
ans = (ll)ans * i % mod;//n!
res = (ll)res * ans % mod * qmi(2,mod-2,mod) % mod;
cout<<res;
return 0;
}