【7.9.2】分身数对

题目链接:http://oj.tfls.net/p/176

  • 题解:如果使用双重循环来查找,本题要超时。用哈希表来处理,定义a[x]代表x这个数在数列中是否存在,1代表存在,0代表,只需扫描1~x/2,若数字存在,那么只需要检查看x减去这个数的结果是否在数列里
#include<bits/stdc++.h>
using namespace std;
const int max_n=2e6+10;
int a[max_n];
int main()
{
	int n, x, s=0;
	cin>>n;
	for(int i=1; i<=n; i++){
		cin>>x;
		a[x]=1;
	} 
	cin>>x;
	for(int i=1; i<=x/2; i++)
		if(a[i]==1 && a[x-i]==1 && x-i!=i)s++;
		//如果i和x-i都有且不等于i, 就是一对分身数对
	cout<<s; 

	return 0;
 }

posted @ 2023-02-24 11:33  TFLSNOI  阅读(156)  评论(0编辑  收藏  举报