Pagini recente » Cod sursa (job #2956751) | Istoria paginii runda/splunge1 | Istoria paginii runda/concurs_micut | Cod sursa (job #2002289) | Cod sursa (job #1031876)
#include <fstream>
#include <algorithm>
#include <unordered_set>
using namespace std;
ifstream fin("dtcsu.in");
ofstream fout("dtcsu.out");
char parse[1 << 18], *now;
inline void verify()
{
if (*now == 0)
{
fin.get(parse, 1 << 18, '\0');
now = parse;
}
}
void skip()
{
while (!(*now >= '0' && *now <= '9'))
{
++now;
verify();
}
while (*now >= '0' && *now <= '9')
{
++now;
verify();
}
}
long long get()
{
while (!(*now >= '0' && *now <= '9'))
{
++now;
verify();
}
long long num = 0;
while (*now >= '0' && *now <= '9')
{
num = num * 10 + (*now - '0');
++now;
verify();
}
return num;
}
unordered_set<long long> S;
int Q, result;
int main()
{
now = parse;
verify();
long long num;
for (int i = 1; i <= 276997; ++i)
{
skip();
//S.insert(num);
}
long long aux;
int numb = 0;
Q = get();
for (int i = 1; i <= Q; ++i)
{
num = get();
aux = (num & (-num)) - 1;
numb = 0;
while (aux)
{
++numb;
aux &= aux - 1;
}
num >>= numb;
while (num % 729 == 0) num /= 729;
while (num % 3 == 0) num /= 3;
while (num % 3125 == 0) num /= 3125;
while (num % 5 == 0) num /= 5;
while (num % 2401 == 0) num /= 2401;
while (num % 7 == 0) num /= 7;
while (num % 11 == 0) num /= 11;
if (num == 1) ++result;
//if (S.find(num) != S.end())
// ++result;
}
fout << result << '\n';
fin.close();
fout.close();
}