Cod sursa(job #1035192)

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

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

int Q,sol;
long long N,x;
string tmp;
int Putere[]={0,0,62,39,0,28,0,23,0,0,0,19};
unsigned long long Pow[20][100];
int main()
{
    for(int i=2;i<=11;++i)
    {
        long long P=1;
        Pow[i][0]=1;
        for(int j=1;j<=Putere[i];++j)P*=i,Pow[i][j]=P;
    }
    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)
        {
            int j=0;
            for(j=0;j<=62;++j)
                if(N % Pow[2][j])break;
            N/=Pow[2][j-1];


            j=0;
            for(j=0;j<=39;++j)
                if(N % Pow[3][j])break;
            N/=Pow[3][j-1];

            j=0;
            for(j=0;j<=39;++j)
                if(N % Pow[5][j])break;
            N/=Pow[5][j-1];

            j=0;
            for(j=0;j<=39;++j)
                if(N % Pow[7][j])break;
            N/=Pow[7][j-1];

            j=0;
            for(j=0;j<=39;++j)
                if(N % Pow[11][j])break;
            N/=Pow[11][j-1];

            if(N==1)++sol;
        }
    }
    g<<sol<<'\n';
    f.close();g.close();
    return 0;
}