[东莞市2013年特长生] T2-数对

题目描述

给出一组 N N N个不同的正整数 A 1 , A 2 , . . . , A n A_1,A_2,...,A_n A1,A2,...,An,它们的值在 1 1 1 1000000 1000000 1000000之间

给定一个整数 X X X,计算这样的数对个数 ( A i , A j ) (A_i,A_j) (Ai,Aj) 1 < = i < j < = N 1<=i<j<=N 1<=i<j<=N并且 A i + A j = X A_i+A_j=X Ai+Aj=X

题目解析

对于每个数 A i A_i Ai判断是否有一个数等于 X − A i X-A_i XAi

因为会有重复的,所以 A n s / 2 Ans/2 Ans/2即可

代码

#include
#include
using namespace std;
int n,x,ans;
int a[1000005];
bool flag[1000005];
int main()
{
	freopen("sumx.in","r",stdin);
        freopen("sumx.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	 scanf("%d",&a[i]),flag[a[i]]=1;
 	scanf("%d",&x);
	for(int i=1;i<=n;i++)
	 if(flag[x-a[i]])
          ans++;
        printf("%d",ans/2);
	return 0;
}

你可能感兴趣的:([东莞市2013年特长生] T2-数对)