Cod sursa(job #1030032)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 15 noiembrie 2013 15:42:17
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda FMI No Stress 4 Marime 1.12 kb
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<vector>
#include<string.h>
using namespace std;

#define MOD 666013
#define NMAX 276998
#define DIM 10001

char buff[DIM];
int poz=0;
int a[]={2,3,5,7,11};

void citeste(long long &numar)
{
	numar = 0;
	char semn='+';     
	while (buff[poz] < '0' || buff[poz] > '9') {     
		semn = buff[poz];
		if (++poz == DIM) 
			fread(buff,1,DIM,stdin),poz=0;
	}          
	while ('0'<=buff[poz] && buff[poz]<='9') {
		numar = numar*10 + buff[poz] - '0';
		if (++poz == DIM) 
			fread(buff,1,DIM,stdin),poz=0;               
	}     
	if (semn == '-')
		numar = -numar;
}

inline int bun(long long n)
{
	int i;
	if(n==1)
		return 1;
	for(i=4;i>=1;i--) {
		while(n%a[i]==0)
			n=1LL*n/a[i];
	}
	if((n & (n - 1) ) == 0)
		return 1;
	if(n==1)
		return 1;
	return 0;
}

int main ()
{
	int p,i,j,nr;
	long long s,n,x,q;
	freopen("dtcsu.in.","r",stdin);
	ofstream g("dtcsu.out");
	for(i=1;i<=276997;i++) {
		citeste(x);
	}
	citeste(q);
	nr=0;
	for(i=1;i<=q;i++) {
		citeste(n);
		nr=nr+bun(n);
	}
	g<<nr;
	g.close();
	return 0;
}