acm书中题目 m-13

来源:互联网 发布:linux系统备份成iso 编辑:程序博客网 时间:2024/06/05 15:00

题目大概:

一行输入多个数字,判断有几对二倍数(一个数是另一个的二倍)。-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;
}

0 0
原创粉丝点击