这道题没啥好说的。因为数据范围不大,我是直接开了个100的数组来表示每个数字出现没有。如果数据范围大的话,因为每组数据的个数比较小,binary_search应该更好些。
1552 | Accepted | 144K | 0MS | C++ | 849B |
/*
ID: thestor1
LANG: C++
TASK: poj1552
*/
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <limits>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <cassert>
using namespace std;
const int MAXN = 100;
int main()
{
std::vector<bool> exists(MAXN, false);
int num;
while (true)
{
scanf("%d", &num);
if (num == -1)
{
break;
}
for (int i = 0; i < MAXN; ++i)
{
exists[i] = false;
}
while (num != 0)
{
exists[num] = true;
scanf("%d", &num);
}
int cnt = 0;
for (int i = 1; i < MAXN / 2; ++i)
{
if (exists[i] && exists[2 * i])
{
cnt++;
}
}
printf("%d\n", cnt);
}
return 0;
}