其他分享
首页 > 其他分享> > P5367康托展开

P5367康托展开

作者:互联网

题目描述

求1∼N的一个给定全排列在所有1∼N全排列中的排名。结果对998244353取模。

输入输出格式

输入格式:

 

第一行一个正整数N。

第二行N个正整数,表示1∼N的一种全排列。

 

输出格式:

 

一行一个非负整数,表示答案对998244353取模的值。

 

#include<bits/stdc++.h>
using namespace std;
long long mod=998244353,n,ans=1;
int a[10001000];
long long fac[10001000];
int main()
{
    cin>>n;
    fac[0]=1;
    for(int i=1;i<=n;i++)fac[i]=(fac[i-1]*(i%mod))%mod; 
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++){
        long long k=0;
        for(int j=i+1;j<=n;j++) if(a[j]<a[i]) k++;
        ans=(ans+k*fac[n-i]%mod)%mod;
    }
    cout<<ans;
}

 

标签:取模,int,long,P5367,10001000,格式,展开,998244353,康托
来源: https://www.cnblogs.com/SFWR-YOU/p/10887154.html