解题思路
1.先利用桶排序把集合中的数输入到数组中。
2.接下来在枚举每一位数和它后面的每一位相加,如果这两个数和它们的和集都在数组中,用令一个数组来记录a[i+j],i+j就说明这个数可以有两个数字组成。
3.最后,遍历a数组,如果此时的元素值大于1,说明满足条件,那么sum++;
#include<bits/stdc++.h>
using namespace std;
bool a[10100];
bool b[10100];
int main()
{
int n,x,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
a[x]=1;
}
for(int i=1;i<=10000;i++)
{
for(int j=i+1;j<=10000;j++)
{
if(a[i]==1&&a[j]==1&&a[i+j]==1)
{
b[i+j]=1;
}
}
}
for(int i=1;i<=10000;i++)
{
if(b[i]==1)
{
sum++;
}
}
cout<<sum;
return 0;
}