Cod sursa(job #120775)

Utilizator anaidaanaida anaida Data 6 ianuarie 2008 16:42:33
Problema Fractal Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.16 kb
program fractal;

const doi:array[0..18] of longint=(1,2,4,8,16,32,64,
128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144);
lung:array[1..15] of longint=(3,15,63,255,1023,4095,16383,65535,
262143,1048575,4194303,16777215,67108863,268435455,1073741823);
var k,x,y:longint;


procedure citire;
var f:text;
begin
  assign(f,'fractal.in');
  reset(f);
  readln(f,k,y,x);
  close(f);
end;

function frac(x,y,k:longint):longint;
begin
  if k=1 then
     if x=1 then
        if y=1 then frac:=0
        else frac:=3
     else
     if y=1 then frac:=1
     else frac:=2
  else
  begin
    if x<=doi[k-1] then
       if y<=doi[k-1] then
          frac:=lung[k-1]-frac(y,doi[k-1]-x+1,k-1)
       else
       frac:=lung[k]-frac(doi[k]-y+1,x,k-1)
       else
       if y<=doi[k-1] then
          frac:=lung[k-1]+1+frac(x-doi[k-1],y,k-1)
       else frac:=2*(lung[k-1]+1)+frac(x-doi[k-1],y-doi[k-1],k-1);
  end;

end;

procedure afisare;
var f:text;
begin
  assign(f,'fractal.out');
  rewrite(f);
  writeln(f,frac(x,y,k));
  close(f);
end;

begin
  citire;
  afisare;
{  writeln(trunc((doi[2]-1)div 2));
  writeln(doi[1]+1);}

end.