programming problems with their solutions