这题一眼排序不等式,第个位置会贡献次(乘法原理),于是写了个排之后再逆序排,两个乘起来再乘以贡献的次数,结果

然后就发现哪里不对了,事实上位置是固定的,所以排序不等式中的应该是,这里需要特别注意的是,因为排序不等式中是要最大的配上最小的,所以在算排序不等式中的不能取模的!!!(取模后最大的就不一定是最大的了,会),

然后我们就愉快的A了这道E题,不得不说这道题还是挺适合萌新练思维的QWQ

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=500010;
const ll INF=2147483647;
const ll mod=998244353;
ll n,a[maxn],b[maxn],sum;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]=a[i]*i*(n-i+1);
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)cin>>b[i];
    sort(b+1,b+n+1);
    reverse(b+1,b+n+1);
    for(int i=1;i<=n;i++)
    {
        a[i]%=mod;
        sum+=a[i]*b[i];
        sum%=mod;
    }
    cout<<sum;
    return 0;
}