0
点赞
收藏
分享

微信扫一扫

acm书中题目 m-13


题目大概:


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