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