题目很简单就是注意随时取模避免溢出即可
#include<iostream>
#include<algorithm>
using namespace std;
const int NUM=1e9+7;
int n,a[100010],maxn=0;
long long ans=0;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
int temp;
cin>>temp;
maxn=max(maxn,temp);
a[temp]++;
}
for(int i=2;i<=maxn;i++){
if(a[i]>1){
for(int j=1;j<=i/2;j++){
if(a[j]>0&&a[i-j]>0){
if(j!=i-j){
ans=ans+((a[i]*(a[i]-1)/2)*a[j]*a[i-j])%NUM;
}
else if(a[j]>=2){
ans=ans+((a[i]*(a[i]-1)/2)*(a[j]*(a[j]-1)/2)%NUM)%NUM;
}
}
}
}
}
cout<<ans%NUM;
return 0;
}