1
0
Fork 0
cp/2ndary/12/TP-HN-2009/R1/HEXA.PAS

76 lines
1.7 KiB
Plaintext

var
f : text;
n, n0, m, i, j, tmp : longint;
s : string;
function dec2hex(deca : longint) : string;
var
a : array[0..7] of byte;
i, j : byte;
begin
dec2hex := '';
i := 0;
while deca > 0 do
begin
a[i] := deca mod 16;
deca := deca div 16;
inc(i)
end;
dec(i);
for j := i downto 0 do
case a[j] of
0 : dec2hex := dec2hex + '0';
1 : dec2hex := dec2hex + '1';
2 : dec2hex := dec2hex + '2';
3 : dec2hex := dec2hex + '3';
4 : dec2hex := dec2hex + '4';
5 : dec2hex := dec2hex + '5';
6 : dec2hex := dec2hex + '6';
7 : dec2hex := dec2hex + '7';
8 : dec2hex := dec2hex + '8';
9 : dec2hex := dec2hex + '9';
10 : dec2hex := dec2hex + 'A';
11 : dec2hex := dec2hex + 'B';
12 : dec2hex := dec2hex + 'C';
13 : dec2hex := dec2hex + 'D';
14 : dec2hex := dec2hex + 'E';
15 : dec2hex := dec2hex + 'F'
end
end;
begin
assign(f, 'HEXA.INP');
reset(f);
read(f, n);
close(f);
m := n;
i := 0;
while m > 0 do
begin
inc(i);
tmp := 1;
for j := 1 to i - 1 do tmp := tmp * 16;
m := m + i * (tmp - tmp * 16)
end;
m := i;
for i := 1 to m - 1 do
begin
tmp := 1;
for j := 1 to i - 1 do tmp := tmp * 16;
n := n + i * (tmp - tmp * 16)
end;
n0 := (n + m - 1) div m;
for i := 1 to m - 1 do
begin
tmp := 1;
for j := 1 to i - 1 do tmp := tmp * 16;
n0 := n0 + tmp * 16 - tmp
end;
s := dec2hex(n0);
if n mod m > 0 then m := n mod m;
assign(f, 'HEXA.OUT');
rewrite(f);
writeln(f, s[m]);
close(f)
end.