计算一对逆序对的贡献,即在n个数期望要删多少步才能删掉其中的两个数,设f(n)表示此时的期望,则有方程$f[n]=3/4+(\sum_{i=2}^{n}f[i]\cdot c(n-2,i-2))/2^n$,手算(打表)得到f[i]=4/3(代入成立),因此$ans=\sum_{i=1}^{n}(i-1)i/3=1/3(n(n+1)(2n+1)/6-n(n+1)/2)=(n-1)(n+1)/9$
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int main(){ 5 while (scanf("%d",&n)!=EOF)printf("%d\n",443664157LL*(n-1)*(n+1)%998244353); 6 }