Pagini recente » Cod sursa (job #49198) | Cod sursa (job #6897) | Cod sursa (job #2172529) | Cod sursa (job #127132) | Cod sursa (job #636924)
Cod sursa(job #636924)
#include <cstdio>
typedef long long i64;
struct str{i64 x,y;};
inline str mp(i64 x,i64 y){str aux;aux.x=x;aux.y=y;return aux;}
str fct2(i64 x)
{
if (x==1)
return mp(1,1);
else if (x==2)
return mp(2,1);
else
{
str aux=fct2(x>>1);
if (x&1)
return mp(aux.x*aux.x%666013,2*aux.x*aux.y%666013);
else
return mp(2*aux.x*aux.y%666013,aux.y*aux.y%666013);
}
}
i64 fct(i64 x)
{
if (x<2)
return 1;
else if (x&1)
{
i64 aux=fct(x>>1);
return aux*aux%666013;
}
else
{
str aux=fct2(x>>1);
return 2*aux.x*aux.y%666013;
}
}
int main()
{
int t;
long long n;
freopen("ciuperci.in","r",stdin);
freopen("ciuperci.out","w",stdout);
scanf("%d",&t);
for (;t;--t)
{
scanf("%lld",&n);
printf("%lld\n",fct(n));
}
return 0;
}