Pagini recente » Cod sursa (job #1656596) | Cod sursa (job #1757560) | Cod sursa (job #1556345) | Profil MeniuCrunchy | Cod sursa (job #1032407)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#define nmax (1000000000000000000LL)
#define ll long long
using namespace std;
string s;
ll val, n, sol;
int lo, mid, hi;
vector <ll> pdoi, ptri, pcinci, psepte, punspe;
ll parse(string s) {
ll x = 0;
for(int i=0; i<s.size(); i++) x = x * 10LL + 1LL*int(s[i]) - 48LL;
return x;
}
int main() {
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");
for(int i=1; i<=276997; i++) getline(f, s);
for(ll i = 1LL; i<=nmax; i *= 2LL) pdoi.push_back(i);
for(ll i = 1LL; i<=nmax; i *= 3LL) ptri.push_back(i);
for(ll i = 1LL; i<=nmax; i *= 5LL) pcinci.push_back(i);
for(ll i = 1LL; i<=nmax; i *= 7LL) psepte.push_back(i);
for(ll i = 1LL; i<=nmax; i *= 11LL) punspe.push_back(i);
getline(f, s);
n = parse(s);
for(int i=1; i<=n; i++) {
getline(f, s);
val = parse(s);
//cout<<"val = "<<val<<".\n";
lo = -1; hi = pdoi.size();
while(hi - lo > 1) {
mid = (lo + hi) >> 1;
if(val % pdoi[mid] == 0LL) lo = mid; else hi = mid;}
val /= pdoi[lo];
lo = -1; hi = ptri.size();
while(hi - lo > 1) {
mid = (lo + hi) >> 1;
if(val % ptri[mid] == 0LL) lo = mid; else hi = mid;}
val /= ptri[lo];
lo = -1; hi = pcinci.size();
while(hi - lo > 1) {
mid = (lo + hi) >> 1;
if(val % pcinci[mid] == 0LL) lo = mid; else hi = mid;}
val /= pcinci[lo];
lo = -1; hi = psepte.size();
while(hi - lo > 1) {
mid = (lo + hi) >> 1;
if(val % psepte[mid] == 0LL) lo = mid; else hi = mid;}
val /= psepte[lo];
lo = -1; hi = punspe.size();
while(hi - lo > 1) {
mid = (lo + hi) >> 1;
if(val % punspe[mid] == 0LL) lo = mid; else hi = mid;}
val /= punspe[lo];
if(val == 1LL) sol++;
}
g<<sol<<"\n";
return 0;
}