烦人程度
题目描述
wdyhy睡不着觉就会不由自主的去数排列,数着数着就睡着了,但是有些排列非常烦人,导致wdyhy睡眠质量变差.一个排列p的烦人程度指的是有多少对(i,j)其中i<j并且p[i]>p[j].
现在wdyhy想知道对于n的所有排列烦人程度之和是多少.
输入
输入的第一行是一个整数n;
输出
输出一个数,表示n的所有排列烦人程度之和.
答案对998244353取模.
样例输入
复制样例数据
3
样例输出
9
提示
(1,2,3)烦人程度为0
(1,3,2)烦人程度为1
(2,1,3)烦人程度为1
(2,3,1)烦人程度为2
(3,1,2)烦人程度为2
(3,2,1)烦人程度为3
对于20%的数据,n<=10;
对于40%的数据,n<=20;
对于60%的数据,n<=233;
对于80%的数据,n<=2000;
对于100%的数据,n<=1000000;
n!种排列;对于任意一个排列的两个数要么正序要么逆序。所以答案是(Cn2)*n!/2;(n!种排列,两个数之间的关系两种,所以除以二)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define mod 998244353
typedef long long ll;
ll fun(int n){
ll ans=n*(n-1)/2;
ans=ans%mod;
for(int i=n;i>2;i--){
ans=ans*i;
ans=ans%mod;
}
return ans;
}
int main()
{
int n;
cin>>n;
ll ans=fun(n);
cout<<ans<<endl;
return 0;
}