/* http://projecteuler.net/
 *
 * Problem 85
 * Although there exists no rectangular grid that contains exactly two
 * million rectangles, find the area of the grid with the nearest solution.
 *
 * Solution by Melkor (Filip Niksic, fniksic@gmail.com)
 *
 **/

#include <iostream>
#include <cmath>
#include <cassert>

using namespace std;

// calculates (n choose 2)
inline int binom(int n) {
    return n*(n-1)/2;
}

inline int closest_n(int m) {
    int n = static_cast<int>(sqrtl(8000000.0L/(m*(m-1))));
    if (abs(2000000-binom(m)*binom(n+1))<abs(2000000-binom(m)*binom(n)))
	++n;
    return n;
}

int main() {
    // number of rectangles in an mxn grid is (m+1 choose 2)*(n+1 choose 2)
    int min_diff = 2000000, min_m, min_n;
    for (int m = 2; m <= 2000; ++m)
	if (abs(2000000-binom(m)*binom(closest_n(m))) < min_diff) {
	    min_diff = abs(2000000-binom(m)*binom(closest_n(m)));
	    min_m = m-1;
	    min_n = closest_n(m)-1;
	}
    cout << min_m << " x " << min_n << " = " << min_m * min_n << endl;
    return 0;
}


