Pagini recente » Cod sursa (job #2104907) | Cod sursa (job #2133622) | Cod sursa (job #64409) | Cod sursa (job #2734460) | Cod sursa (job #1031599)
#include<cstdio>
#include<fstream>
#include<queue>
#include<algorithm>
using namespace std;
ifstream f("dtcsu.in");
#define MaxChar 100000
#define verf ( (++CharB==MaxChar) ? ( f.read(Buffer,MaxChar),CharB=0 ) : (1) )
int CharB;
char ch,Buffer[MaxChar];
void cit(long long &a)
{
a=0;
for (;!((Buffer[CharB]>='0'&&Buffer[ CharB ]<='9')||(Buffer[CharB]=='-'));verf);
for (a=0;(Buffer[CharB]>='0'&&Buffer[CharB]<='9');a*=10,a+=(Buffer[CharB]-'0'),verf);
}
int i,p,u,mij,ras,n5,n7,n11,T,sol;
long long V,INF,p3[70],p5[70],p2[70],p11[70],p7[70];
int main()
{
freopen("dtcsu.out","w",stdout);
f>>T;
f.get();
INF=1000000000000000000*1LL;
p3[0]=p5[0]=p7[0]=p11[0]=1;
for(i=0;i<=59;i++)
p2[i]=(1LL<<i)-1;
for(i=1;i<=37;i++)
p3[i]=1LL*p3[i-1]*3;
for(i=1;i<=100;i++)
{
p5[i]=1LL*p5[i-1]*5;
if(p5[i]<0||p5[i]>INF) break;
n5=i;
}
for(i=1;i<=100;i++)
{
p7[i]=1LL*p7[i-1]*7;
if(p7[i]<0||p7[i]>INF) break;
n7=i;
}
for(i=1;i<=100;i++)
{
p11[i]=1LL*p11[i-1]*11;
if(p11[i]<0||p11[i]>INF) break;
n11=i;
}
while(T)
{
T--;
cit(V);
p=0;
u=59;
ras=0;
while(p<=u)
{
mij=(p+u)>>1;
if((V&p2[mij])==0)
{
ras=mij;
p=mij+1;
}
else u=mij-1;
}
V/=1LL<<ras;
////////////////////////////////
p=0;
u=37;
ras=0;
while(p<=u)
{
mij=(p+u)>>1;
if(V%p3[mij]==0)
{
ras=mij;
p=mij+1;
}
else u=mij-1;
}
V/=p3[ras];
////////////////////////////////
p=0;
u=n5;
ras=0;
while(p<=u)
{
mij=(p+u)>>1;
if(V%p5[mij]==0)
{
ras=mij;
p=mij+1;
}
else u=mij-1;
}
V/=p5[ras];
////////////////////////////////
p=0;
u=n7;
ras=0;
while(p<=u)
{
mij=(p+u)>>1;
if(V%p7[mij]==0)
{
ras=mij;
p=mij+1;
}
else u=mij-1;
}
V/=p7[ras];
////////////////////////////////
p=0;
u=n11;
ras=0;
while(p<=u)
{
mij=(p+u)>>1;
if(V%p11[mij]==0)
{
ras=mij;
p=mij+1;
}
else u=mij-1;
}
V/=p11[ras];
if(V==1) sol++;
}
printf("%d\n",sol);
return 0;
}