Pagini recente » Cod sursa (job #1084263) | Cod sursa (job #34730) | Cod sursa (job #3201337) | Cod sursa (job #1759910) | Cod sursa (job #614060)
Cod sursa(job #614060)
Utilizator |
Mr. Noname cezar305 |
Data |
5 octombrie 2011 15:56:25 |
Problema |
Ciuperci |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
0.88 kb |
#include <stdio.h>
#define MOD 666013
#define MAXLOG 60
long long Aux, N, Ans, putere, K;
int T;
int i, nr, x;
long long put2[MAXLOG];
int main()
{
freopen("ciuperci.in","r",stdin);
freopen("ciuperci.out","w",stdout);
scanf("%d",&T);
put2[0] = 1LL;
for (i=1; i<MAXLOG; ++i)
put2[i] = put2[i-1] * 2;
for (; T; --T){
scanf("%lld",&N);
Aux = 1LL; nr = 0;
while (Aux <= N){
N-= Aux;
Aux = Aux*2;
++nr;
}
K = N; N = nr;
putere = 0;
while (K!=0 && N!=0){
Aux = K-1;
x = 0;
while (Aux){
++x;
Aux = Aux / 2;
}
putere = putere + (N-x)*K;
N = x;
K = put2[N] - K;
}
Ans = 1;
Aux = 2;
for (i = 0; put2[i] <= putere; ++i){
if (putere & put2[i])
Ans = (Ans * Aux) % MOD;
Aux = (Aux * Aux) % MOD;
}
printf("%d\n", Ans);
}
return 0;
}