Cod sursa(job #15815)

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

long putere[1000],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 return k+nrg*2;
}

int main()
{
FILE *f=fopen("chiftea.in","r");
FILE *g=fopen("chiftea.out","w");
long T, N,i;
putere[0]=1;
putere[1]=1;l=1;
while ((putere[l]>0)&&(putere[l]<=2000000000/4))putere[++l]=putere[l-1]*4;
putere[++l]=2010000001;
fscanf(f,"%ld\n",&T);
for(i=1;i<=T;i++)
{
 fscanf(f,"%ld\n",&N);
 fprintf(g,"%ld\n",chiftele(N));
}

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