Discrete Algorithmic Mathematics by Anthony Ralston & Stephen B. Maurer