Source: http://www.normalesup.org/~dconduche/informatique/PC/Sujets/e3a.pdf