@[tyy6034](/user/917842) 看一下我改的好吧,没时间问答了
```cpp
#include<iostream>
using namespace std;
typedef long long ll;
const ll k=1000000007;
ll n,ma,a[500005],cnt=0;
ll c(ll x){
return x*(x-1)/2;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
ll x;
cin>>x;
ma = max(ma,x);
a[x]++;
}
for(int i=1;i<=ma;i++)
{
if(a[i]>=2)
{
ll x=c(a[i])%k;
for(int j=1;j<=i/2;j++)
{
if(i==j*2)cnt+=(c(a[j])*x)%k;
else cnt+=(a[j]*a[i-j])%k*x%k;
}
}
}
cout<<cnt<<endl;
return 0;
}
```
by QAQQWQ0v0 @ 2023-11-11 19:57:16
@[QAQQWQ0v0](/user/579699) 为什么我这里只对了3个?
by tyy6034 @ 2023-11-11 20:00:27
@[tyy6034](/user/917842) 搞错了,是这个
```cpp
#include<iostream>
using namespace std;
typedef long long ll;
const ll k=1000000007;
ll n,ma,a[500005],cnt=0;
ll c(ll x){
return x*(x-1)/2;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
ll x;
cin>>x;
ma = max(ma,x);
a[x]++;
}
for(int i=1;i<=ma;i++)
{
if(a[i]>=2)
{
ll x=c(a[i])%k;
for(int j=1;j<=i/2;j++)
{
if(i==j*2)(cnt+=(c(a[j])*x)%k)%=k;
else (cnt+=(a[j]*a[i-j])%k*x%k)%=k;
}
}
}
cout<<cnt<<endl;
return 0;
}
```
by QAQQWQ0v0 @ 2023-11-11 21:42:16