C++ solution to problem 16