蒜头君给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。比如,对于数列 1 2 3 4,这个问题的答案就是 2,因为 3 = 2 + 1, 4 = 1 + 3。
输入格式
共两行,第一行是数列中数的个数 n(1≤n≤100),第二行是由 n 个不大于 10000 的正整数组成的数列,相邻两个整数之间用单个空格隔开。
输出格式
一个整数,即数列中等于其他两个数之和的数的个数。
Sample Input
4
1 2 3 4
Sample Output
2
思路
此题中,一个数等于另外两个数之和,这个数只能算一次(多组数相加都能得到这个数,只算一次)例如:
{
5
1 2 2 3 4
2
注:
编号 0,1,;编号 0,2;相加1+2=3;只算一次;
编号1,2;相加 2+2=4;第二次;
}
#include#include #include using namespace std; int n,s[111],x,book[11111]; int main() { scanf("%d",&n); memset(s,0,sizeof(s)); memset(book,0,sizeof(book)); for(int i=1; i<=n; i++) { scanf("%d",&s[i]); } sort(s+1,s+1+n); int sum=0; for(int i=1;i<=n;i++) { int flag=0; for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ if(s[i]==s[j]+s[k]&&j!=i&&j!=k&&i!=k){ flag=1; sum++; break; } } if(flag==1) break; } } printf("%dn",sum); }



