Problem Statement
For example, here's a square divided into 2 * 3 rectangles:
+--+--+--+
|**|**|**|
|**|**|**|
|**|**|**|
+--+--+--+
|**|**|**|
|**|**|**|
|**|**|**|
+--+--+--+
Find the number of squares made up by these rectangles, i.e., all vertices of squares must coincide with one of the rectangles' vertices. You should count only squares with non-zero area. Two squares are equal if and only if they share the exact same set of vertices. Only count squares whose sides are parallel to the sides of the original square.
Definition
- Class:
- Apportionment
- Method:
- numberOfSquares
- Parameters:
- int, int
- Returns:
- long
- Method signature:
- long numberOfSquares(int N, int M)
- (be sure your method is public)
Constraints
- N and M will each be between 1 and 100000, inclusive.
Examples
1
1
Returns: 1
Here there is only square.
2
2
Returns: 5
Here there are 4 smaller squares (each of the rectangles is a square), along with the one original square.
99999
49999
Returns: 1
2
3
Returns: 1
3
2
Returns: 1
1
100000
Returns: 1
100000
1
Returns: 1
6
4
Returns: 13
3
6
Returns: 22
6
3
Returns: 22
5
6
Returns: 1
5
7
Returns: 1
5
8
Returns: 1
5
9
Returns: 1
5
10
Returns: 95
5
11
Returns: 1
5
12
Returns: 1
6
7
Returns: 1
6
8
Returns: 21
6
9
Returns: 48
6
10
Returns: 25
6
11
Returns: 1
6
12
Returns: 161
7
8
Returns: 1
7
9
Returns: 1
7
10
Returns: 1
7
11
Returns: 1
7
12
Returns: 1
8
9
Returns: 1
8
10
Returns: 31
8
11
Returns: 1
8
12
Returns: 118
9
10
Returns: 1
9
11
Returns: 1
9
12
Returns: 84
10
11
Returns: 1
10
12
Returns: 43
11
12
Returns: 1
15
15
Returns: 1240
50
50
Returns: 42925
300
300
Returns: 9045050
579
579
Returns: 64869230
981
981
Returns: 315173391
3021
3021
Returns: 9194889811
4568
4568
Returns: 31783346884
12031
12031
Returns: 580547916416
79291
79291
Returns: 166172305890946
100000
100000
Returns: 333338333350000
63402
68386
Returns: 1084018189
19752
75666
Returns: 2283586211
47920
44228
Returns: 1854618266
12405
62535
Returns: 3500004040
24432
91788
Returns: 7880761406
14720
99820
Returns: 224592539230
88920
91305
Returns: 117757223475
45080
82376
Returns: 67476656996
18585
81774
Returns: 1882421423799
70642
22477
Returns: 1698852555296
68708
34354
Returns: 27030255822175
11244
33732
Returns: 1421614422930
86968
74544
Returns: 26845788114220
43421
86842
Returns: 54577759822691
50000
100000
Returns: 83334583325000
20916
3486
Returns: 84731181381
49825
89685
Returns: 14841511452835
5261
68393
Returns: 631010395411
91098
71577
Returns: 14140280327796
5848
54704
Returns: 700012860
6427
96405
Returns: 1327399506658
6253
62530
Returns: 814994053211
41390
33112
Returns: 3781305115905
6285
37710
Returns: 496550139435
5445
43560
Returns: 430504135215
71487
66924
Returns: 2423300986041
40894
5842
Returns: 465240338377
6347
38082
Returns: 511390420530
26964
79044
Returns: 58620544710
58253
13443
Returns: 1169452101441
27966
86022
Returns: 282689973969
3329
23303
Returns: 86088689025
89280
59520
Returns: 52713897508320
72520
17672
Returns: 2803757580
34480
62064
Returns: 4918333077736
38928
93559
Returns: 1
56289
54921
Returns: 1717582418
1353
3293
Returns: 1
41971
191
Returns: 1
52749
89401
Returns: 1
9017
94945
Returns: 1
60289
42117
Returns: 1
8877
85229
Returns: 1
96219
4039
Returns: 1
76711
54969
Returns: 1
3
3
Returns: 14
99999
11111
Returns: 4115164581276
6
4
Returns: 13
100000
100000
Returns: 333338333350000
3
3
Returns: 14
78272
54968
Returns: 9412087308
5
10
Returns: 95
10
10
Returns: 385
2
4
Returns: 7
210
330
Returns: 666595
12
8
Returns: 118
99564
99874
Returns: 2486063455
6
144
Returns: 1701
10000
10000
Returns: 333383335000
16
36
Returns: 586
400
500
Returns: 6611650
99999
99999
Returns: 333328333350000