Знаю, что можно вычислить проще - через калькулятор bc, но я попытался, всё-таки, решить эту задачу логически. http://pastebin.ru/w8gbJFaS
Представление в двоичной системе исчисления, разбиение на тетрады и из двоичной системы перевод в 16-ричную. Как можно оптимизировать код? Такая, своего рода, логическая игра. Не проще было бы создать массив из тетрад?