blob: 97687bb4b1cf9a840feda2fd7017b9261553ef07 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include <stdio.h>
#include <stdlib.h>
/* rectangle count for a m*n grid:
* for i = 1 to m
* for j = 1 to n
* (m-i+1)*(n-j+1)
* = [m(m+1)/2][n(n+1)/2]
*/
#define AREA 2000000
int main()
{
int m, n, bestm, bestn;
int nearest = AREA;
for (m = 1; m <= 2000; m++) {
int a1 = m*(m+1)/2;
for (n = 1; n <= 2000; n++) {
int area = a1*n*(n+1)/2;
if (area > AREA && area-AREA>nearest)
break;
if (abs(area-AREA) < nearest) {
nearest = abs(area-AREA);
bestm = m;
bestn = n;
}
}
}
printf("%d * %d = %d\n", bestm, bestn, bestm*bestn);
}
|