Cod sursa(job #15825)

Utilizator florin.moldovanuFlorin M florin.moldovanu Data 11 februarie 2007 19:21:41
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<math.h>

long putere[2000],l;

long chiftele(long N)
{long k,nrg,x,ll;
ll=1;
while(putere[ll]<=N)
ll++;
ll--;
x=(long)sqrt(putere[ll]);
k=4*x;
if ((N-x*x)%x==0) nrg=(N-x*x)/x;
else nrg=(N-x*x)/x+1;
if(N==putere[ll]) return k;
else {ll= k+nrg*2;return ll;}
}




int main()
{
FILE *f,*g;
long T, N,i,y;
f=fopen("chiftea.in","r");
g=fopen("chiftea.out","w");

putere[0]=1;
putere[1]=1;l=1;
while ((putere[l]>0)&&(putere[l]<=200000))putere[++l]=putere[l-1]*4;
putere[++l]=201000;
fscanf(f,"%ld\n",&T);
for(i=1;i<=T;i++)
{
 fscanf(f,"%ld\n",&N);y=chiftele(N);
 fprintf(g,"%ld\n",y);
}

fclose(f);
fclose(g);
return 0;
}