1.问题描述
输入有几个列表,列表中有多个元素,有元素是其他元素的两倍,每行以0终止,整个程序以输入-1行结束
2.思路
用set排序,然后利用find函数查找有几对这样的数
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int>s;
set<int>::iterator it;
int sum=0,n;
while(cin>>n)
{
if(n==-1)break;
if(n!=0){s.insert(n);}
if(n==0)
{
for(it=s.begin();it!=s.end();it++)
{
if(s.find(2*(*it))!=s.end())
sum++;
}
cout<<sum<<endl;
sum=0;
s.clear();
}
}
return 0;
}
也可以用二重循环判断是否满足二倍关系。
3.体会
利用find函数效率更高。