#include<stdio.h>
long long read()
{
long long x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
void write(long long x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)
{
write(x/10);
}
putchar(x%10+'0');
return;
}//快读快出
long long fac[1000010]={1,1};
int a[1000010];
int main()
{
long long n=read();
fac[0]=1;
for(int i=1;i<=n;i++)
fac[i]=(fac[i-1]*i)%998244353;//阶乘
for(int i=1;i<=n;i++)
a[i]=read();
long long ans=0;
for(int i=1;i<=n;i++)
{
long long sum=0;
for(int j=i;j<=n;j++)
{
if(a[i]<a[j])//统计
sum++;
}
ans=(sum*fac[n-i]+ans)%998244353;
}
write((ans+1)%998244353);
return 0;
}
样例就错了
input 3 2 1 3
output 3
求调QAQ