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; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步