题目大概:
一行输入多个数字,判断有几对二倍数(一个数是另一个的二倍)。-1结束输入。思路
思路:
建立一个向量,输入数据,并且把向量中的数据存储到集合中。从第一个开始,用count(2*需判断的数),来判断。
感想:
用集合存储数据会自动排好序,可以让我们更方便的处理数据,减少了处理数据的过程。
代码:
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
for(;;)
{
int b[15];
int k=0,j=0;
vector<int>a;
set<int>aa;
for(int i=0;;i++)
{cin>>b[i];
if(b[i]==-1){j=1;break;}
if(b[i]==0)break;
a.push_back(b[i]);
aa.insert(b[i]);
}
if(j)break;
for(int t=0;t<aa.size();t++)
{int c=0;
c=aa.count(2*a[t]);
if(c){k++;}
}
cout<<k<<endl;
}
return 0;
}
#include <vector>
#include <set>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
for(;;)
{
int b[15];
int k=0,j=0;
vector<int>a;
set<int>aa;
for(int i=0;;i++)
{cin>>b[i];
if(b[i]==-1){j=1;break;}
if(b[i]==0)break;
a.push_back(b[i]);
aa.insert(b[i]);
}
if(j)break;
for(int t=0;t<aa.size();t++)
{int c=0;
c=aa.count(2*a[t]);
if(c){k++;}
}
cout<<k<<endl;
}
return 0;
}