Cod sursa(job #1031899)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 15 noiembrie 2013 18:35:37
Problema Dtcsu Scor 20
Compilator cpp Status done
Runda FMI No Stress 4 Marime 1.19 kb
#include <fstream>
#include <cstdio>
#define LG 800000
using namespace std;
int ind, sol;
char buffer[LG];
long long Q, N;
 
inline void Citeste(long long &x)
{
    while(buffer[ind] < '0' || '9' < buffer[ind])
    {
        ind++;
        if(ind == LG)
        {
            fread(buffer,1,LG,stdin);
            ind=0;
        }
    }
    x = 0LL;
    while('0' <= buffer[ind] && buffer[ind] <= '9')
    {
        x = x * 10LL + buffer[ind] - '0';
        ind++;
        if(ind == LG)
        {
            fread(buffer,1,LG,stdin);
            ind=0;
        }
    }
}
 
int main()
{
    int i, lim;
	long long x;
    freopen("dtcsu.in","r",stdin);
    fread(buffer,1,LG,stdin);
	for(i = 1; i <= 276997; ++i)
		Citeste(x);
    Citeste(Q);
	lim = (int)Q / 5 + 250000;
	while(Q--)
	{
		Citeste(N);
		if(N == 0LL)
			continue;
		while(N % 2LL == 0LL)
			N /= 2LL;
		while(N % 3LL == 0LL)
			N /= 3LL;
		while(N % 5LL == 0LL)
			N /= 5LL;
		while(N % 7LL == 0LL)
			N /= 7LL;
		while(N % 11LL == 0LL)
			N /= 11LL;
		if(N == 1LL)
		{
			sol++;
			if(sol >= lim)
				break;
		}
	}
	
	freopen("dtcsu.out","w",stdout);
	printf("%d\n", sol);
    return 0;
}