喜提10分,各位大佬帮忙看看
查看原帖
喜提10分,各位大佬帮忙看看
609811
accccccc楼主2022/5/31 18:20
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
#include <set>
#include <map>
using namespace std;
#define ll long long
#define INF  0x3f3f3f3f
const int N = 1e6+10;
const int M = N*4;
const int mod = 998244353;
/*
*/ 
int a[N];
ll jc(int n) {
	if(n == 0)
		return 1;
	return (n * jc(n-1));
}
int cantor(int *a, int n) {
	ll total = 0;
	for(int i = 0; i < n-1; ++i) {
		int num = n - i - 1; //后面有多少个数 
		int sum = 0; //后面有多少个数小于当前的数 
		for(int j = i+1; j < n; ++j) {
			if(a[j] < a[i])
				sum++;
		}
		total = (total + (sum * jc(num))) % mod;
	}
	return ((total + 1) % mod);
}
int main() {
    ios::sync_with_stdio(false); cin.tie(0);
	int n;
	cin >> n;
	for(int i = 0; i < n; ++i) {
		cin >> a[i];
	}
	cout << cantor(a, n);
	return 0;
} 
2022/5/31 18:20
加载中...