Cod sursa(job #1035205)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 18 noiembrie 2013 13:54:00
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <algorithm>
#include <string>
#include <bitset>
using namespace std;
#define Nmax 276997
#define Pmax 1000
using namespace std;

ifstream f("dtcsu.in");
ofstream g("dtcsu.out");

int Q,sol;
long long N,x,k,P[Pmax];
string tmp;
int Putere[]={0,0,62,39,0,28,0,23,0,0,0,19};
unsigned long long Pow[20][100];
bool V[Nmax];

void Ciur()
{
    P[++k]=2;
    int i,i2=0,j;
    for (i = 3; i <= Pmax; i += 2)
    {
        if (V[i >> 4] & (1 << ((i >> 1) & 7))) continue;
        P[++k]=i;
        for (j = i + (i2 = i + i); j <= Pmax; j += i2)
            V[j >> 4] |= 1 << ((j >> 1) & 7);
    }
}

int main()
{
    Ciur();
    //for(int i=1;i<=Nmax;++i)getline(f,tmp);
    getline(f,tmp);
    Q=0;
    for(int i=0;i<tmp.size();++i)Q=Q*10+(tmp[i]-'0');

    for(int i=1;i<=Q;++i)
    {

        getline(f,tmp);
        long long N=0;
        for(int i=0;i<tmp.size();++i)N=N*10+(tmp[i]-'0');
        if(N)
        {
            bool ok=true;
            for(int j=6;j<=k && ok;++j)
                if(N % P[j]==0)ok=false;
            if(ok)++sol;
        }
    }
    g<<sol<<'\n';
    f.close();g.close();
    return 0;
}