By counting carefully it can be seen that a rectangular grid measuring 3 by 2 contains eighteen rectangles:
Although there exists no rectangular grid that contains exactly two million rectangles, find the area of the grid with the nearest solution.
以为矩阵宽度固定为2,特别高兴的写出来了发现结果不对┑( ̄Д  ̄)┍
原来是任意的矩形
对于任意矩形M*N
其中1*1的矩阵有M*N个
1*2的矩阵有M*(N-1)个
2*1的矩阵有(M-1)*N个
实际上只要确定小矩阵左上角顶点在大矩形中的位置,这个矩阵的位置就唯一确定了
所有在任意矩形M*N中,矩阵i*j有(M-i+1)*(N-j+1)个
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int grid[100000];
int grid_num(int m, int n)
{
int num = 0;
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
num += (m - i + 1)*(n - j + 1);
}
}
return num;
}
int main()
{
int s;
int closest = 0;
for (int M = 1; M < 2000; M++)
{
for (int N = 1; N < 2000; N++)
{
int num = grid_num(M, N);
if (abs(closest-2000000)>abs(num-2000000))
{
s = M*N;
closest = num;
}
if (num>2000000)
break;
}
}
cout << s << endl;
system("pause");
return 0;