Problem Statement
A set of stamps is called good if it can be used to cover the entire grid. Each stamp must be placed along the grid lines. I.e., for each stamp each cell is either completely covered by the stamp or not covered at all. The stamps may overlap arbitrarily. The stamps may also cover areas outside of the grid. For example, you may use a 4x4 stamp just to cover a single cell in the corner of the grid.
You are given the
Definition
- Class:
- BearFills
- Method:
- countSets
- Parameters:
- int, long, long
- Returns:
- long
- Method signature:
- long countSets(int N, long W, long H)
- (be sure your method is public)
Notes
- N will be between 1 and 60, inclusive.
- H and W will be between 1 and 10^18, inclusive.
Constraints
Examples
3
1
3
Returns: 5
He has a 1x3 rectangle and 3 square stamps. The stamps' sides are 1, 2, and 4. The good sets of stamps are the following ones: (1,2), (1,2,4), (1,4), (2,4), and (4).
3
3
5
Returns: 1
He has a 3x5 rectangle and 3 square stamps. The stamps' sides are 1, 2, and 4. He needs all of them.
60
3
2
Returns: 1152921504606846972
He has a 3x2 rectangle and 60 square stamps. Only four sets are not good: (), (1), (2), and (1,2). The answer is 2^60-4.
6
5
4
Returns: 56
1
1
1
Returns: 1
empty tests, could be changed into example
1
1
1
Returns: 1
1
1
2
Returns: 0
1
1000000000000000000
1000000000000000000
Returns: 0
2
1
1
Returns: 3
2
1
2
Returns: 2
2
2
1
Returns: 2
2
3
1
Returns: 1
2
1
3
Returns: 1
2
2
2
Returns: 2
2
2
3
Returns: 0
2
500000000000000000
333333333333333333
Returns: 0
3
1
1
Returns: 7
3
1
2
Returns: 6
3
2
1
Returns: 6
3
2
2
Returns: 6
3
3
1
Returns: 5
3
2
3
Returns: 4
3
4
1
Returns: 4
3
1
4
Returns: 4
3
5
1
Returns: 3
3
2
5
Returns: 2
3
2
4
Returns: 4
3
3
3
Returns: 4
3
4
4
Returns: 4
3
3
4
Returns: 4
3
5
3
Returns: 1
3
5
3
Returns: 1
3
5
4
Returns: 0
3
2
6
Returns: 2
3
1
6
Returns: 2
3
1
7
Returns: 1
3
8
1
Returns: 0
3
1000000000000000000
1
Returns: 0
3
7
2
Returns: 0
3
5
5
Returns: 0
4
2
5
Returns: 10
4
6
3
Returns: 8
5
5
5
Returns: 24
6
10
20
Returns: 36
6
8
8
Returns: 56
6
8
9
Returns: 48
33
24
18
Returns: 8589934560
33
29
16
Returns: 8589934560
21
15
2
Returns: 2097136
27
28
13
Returns: 134217696
38
21
4
Returns: 274877906920
38
18
6
Returns: 274877906922
20
22
20
Returns: 1048544
35
21
4
Returns: 34359738344
14
10
12
Returns: 16368
22
15
9
Returns: 4194288
26
786429311801
267978931103
Returns: 0
27
535117610055
502813891536
Returns: 0
35
629323147933
591129520407
Returns: 0
35
20386284475
314432298861
Returns: 0
30
801790009121
688297105827
Returns: 0
33
976151277153
680358180286
Returns: 0
17
482207812547
446718819695
Returns: 0
8
280312875687
745708947947
Returns: 0
36
732738098157
704344264659
Returns: 0
21
158849910281
860323318519
Returns: 0
56
525337074840097679
450000650378937097
Returns: 0
60
476607361346196564
912994317508995492
Returns: 0
60
439181651447323773
257748377941753647
Returns: 576460752303423488
56
100858580960662041
481675599978569609
Returns: 0
58
858741320719011613
296194989764343051
Returns: 0
59
142924358137994538
676986696398315125
Returns: 0
56
691763210211019059
969105774245729255
Returns: 0
58
624256359999031729
317525195552086015
Returns: 0
56
585767157804835450
254593573631841591
Returns: 0
58
935811243574382823
26770709343246610
Returns: 0
60
1000000000000000000
100000000000000000
Returns: 144115188075855872
59
1000000000000000000
1000000000000000000
Returns: 0
60
12
4
Returns: 1152921504606846964
60
1000000000000000000
1
Returns: 152921504606846976
60
3
58823529411764705
Returns: 1094097975195082269
60
1
1
Returns: 1152921504606846975
60
1
2
Returns: 1152921504606846974
59
2
1
Returns: 576460752303423486
60
2
325329585832539599
Returns: 827591918774307376
59
288230376151711745
288230376151711742
Returns: 2
60
1
1099511627776
Returns: 1152920405095219200
60
1
1000000000000000000
Returns: 152921504606846976
60
100000000000000000
1000000000000000
Returns: 1052716412897853440
11
1030
10
Returns: 1010
5
10
58
Returns: 0
60
1
1000000000000000
Returns: 1151921504606846976
60
13449832
115292150460684697
Returns: 1037629354139451392