原题链接
这道题需要注意的点是输出有多少个数可以表示成其它两个不同数的和,比较容易写成有多少个等式成立。
#include <iostream>
#include <cstdlib>
using namespace std;
int cmp(const void *a,const void *b){
return *(int *)a-*(int *)b;
}
int main(){
int n,sum=0;
cin >> n;
int x[n];
for(int i=0;i<n;i++){
cin >> x[i];
}
qsort(x,n,sizeof(int),cmp);
for(int k=2;k<n;k++){
int flag=0;
for(int i=0;i<n-2 && i<k;i++){
for(int j=i+1;j<n-1 && j<k;j++){
if(x[i]+x[j]==x[k]){
flag=1;
break;
}
}
if(flag==1){
break;
}
}
if(flag==1){
sum++;
continue;
}
}
cout << sum;
return 0;
}