a solution to http://projecteuler.net/problem=50