#include <iostream>
#include <algorithm>
using namespace std;
int n,a[100005],u,b[10],cnt;
const int mod=1e9+7;
long long ans;
bool check(){
sort(b+1,b+5);
if(b[3]==b[4]&&b[1]+b[2]==b[3])return 1;
else return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;++i){
cin>>a[i];
}
u=1<<n;
for(int i=0;i<u;++i){
if(__builtin_popcount(i)==4){
cnt=1;
for(int j=1;j<=n;++j){
if(i&1<<(j-1))b[cnt++]=a[j];
}
if(check())ans++;
ans%=mod;
}
}
cout<<ans;
return 0;
}
用的是二进制的想法,自己电脑测试都没问题啊
求大佬解答QAQ