Cod sursa(job #1746981)

Utilizator borcanirobertBorcani Robert borcanirobert Data 24 august 2016 12:21:38
Problema Dtcsu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
using namespace std;

FILE *f = fopen( "dtcsu.in", "r" );
FILE *g = fopen( "dtcsu.out", "w" );

const int MAXR = 1000;
using LL = long long;
char r[MAXR];
int nr = MAXR - 1;
LL x;
LL Q;
LL rez;

void Get( LL& x );
void Next();

int main()
{
    int i, j;

    for ( i = 1; i <= 276997; i++ )
        Get(x);

    Get(Q);
    for ( i = 1; i <= Q; i++ )
    {
        Get(x);

        while ( x % 2 == 0 ) x /= 2;
        while ( x % 3 == 0 ) x /= 3;
        while ( x % 5 == 0 ) x /= 5;
        while ( x % 7 == 0 ) x /= 7;
        while ( x % 11 == 0 ) x /= 11;

        if ( x == 1 )
            rez++;
    }

    fprintf( g, "%lld\n", rez );

    fclose(f);
    fclose(g);
    return 0;
}

void Get( LL& x )
{
    for ( ; r[nr] < '0' || r[nr] > '9'; Next() );

    for ( x = 0; r[nr] >= '0' && r[nr] <= '9'; Next() )
        x = ( x * 10LL ) + ( 1LL*( r[nr] - '0' ) );
}

void Next()
{
    if ( ++nr == MAXR )
    {
        std::fread( r, 1, MAXR, f );
        nr = 0;
    }
}