about summary refs log tree commit diff
path: root/12/TP-HN-2009/R1/HEXA.PAS
blob: a2fd6ca8acb67bf1003eb2b3686b0a53ee12da08 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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.