测了极限数据循环次数是 2×109 理论来说能过
#include <bits/stdc++.h>
using namespace std;
const int N=5e3+5;
#define int unsigned int
int n;
int a[N];
int qwq[N][N],ovo[N][N];
bool cmp(int a,int b){return a>b;}
int ans=0;
int lpos[N];
int g1,g2;
//long cnt=0;
signed main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
lpos[a[i]]=max(lpos[a[i]],i);
}
lpos[5001]=1;
lpos[0]=n;
for(int i=5000;i>=1;i--)if(!lpos[i])lpos[i]=lpos[i+1];
// cout<<"lxl"<<endl;
for(int i=1;i<=5000;i++) for(int j=1;j<=5000;j++)ovo[i][j]=i/j+1;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
qwq[i][j]=a[i]/a[j];
}
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
int now=j+1,nowi=qwq[i][j+1],nowj=qwq[j][j+1];
// int cnt=0;
while(now<=n){
// cnt++;
g1=ovo[a[i]][nowi+1],g2=ovo[a[j]][nowj+1];
g1=lpos[max(g1,g2)];
ans+=qwq[i][j]*qwq[i][now]*qwq[j][now]*(g1+1-now);
now=g1+1;
nowi=qwq[i][now];
nowj=qwq[j][now];
}
// cout<<cnt<<endl;
}
}
// cout<<cnt;
cout<<ans;
return 0;
}
用的分块,还是说2×109不能过()