Problem Statement
A floating point representation of a number in base b is written as M * bE, where M is called the mantissa and E is the exponent. Depending on the allowed values for M and E, a number may have multiple possible representations. In this problem, we will work with base 2, and we will limit M and E to be unsigned integers, each with a fixed number of bits. You must determine the number of possible representations a given number has in such a system.
For example, a 4-bit mantissa has a range of 0 to 15, inclusive, and a 2-bit exponent has a range of 0 to 3, inclusive. Using this system, the number 24 can be represented as: 12*21, 6*22, and 3*23. Note that every time the mantissa is doubled or halved, the exponent is decremented or incremented by 1, respectively. Given an
Definition
- Class:
- FloatingPoint
- Method:
- representations
- Parameters:
- int, int, int
- Returns:
- int
- Method signature:
- int representations(int number, int mantissa, int exponent)
- (be sure your method is public)
Constraints
- number will be between 1 and 1000000000 (109), inclusive.
- mantissa will be between 1 and 20, inclusive.
- exponent will be between 1 and 20, inclusive.
Examples
24
4
2
Returns: 3
Example from the problem statement.
1
3
3
Returns: 1
The number 1 can be represented in only one way (regardless of the mantissa and exponent sizes).
8
3
3
Returns: 3
To represent the number 8 we can choose (ordered by exponent) from: 8*20, 4*21, 2*22, 1*23. The exponent has the range for larger numbers, but the smallest mantissa is used in the last case in this list.
16
5
2
Returns: 4
To represent the number 16 we can choose (ordered by exponent) from: 16*20, 8*21, 4*22, and 2*23. Here the next possibility (1*24) would require an exponent that cannot be represented with 3 bits.
17408
10
10
Returns: 6
Note that 17408 = 17*210. Thus the number 17 (or 1001 in binary notation) can be shifted to fit in 6 positions within the 10 mantissa bits (using leading or trailing zeros): from 17*210 to 544*25. Any exponent less than 5 would overflow the mantissa.
631933540
19
2
Returns: 0
514787031
19
18
Returns: 0
196309904
7
7
Returns: 0
847780949
14
5
Returns: 0
143200754
10
5
Returns: 0
927944048
1
4
Returns: 0
99006138
16
7
Returns: 0
332147114
20
20
Returns: 0
588529368
20
11
Returns: 0
394242490
7
5
Returns: 0
424608074
7
3
Returns: 0
892754793
13
6
Returns: 0
7820336
15
12
Returns: 0
26116832
15
17
Returns: 0
674136365
2
15
Returns: 0
179709260
19
12
Returns: 0
407020201
11
7
Returns: 0
910277972
19
16
Returns: 0
603213839
5
17
Returns: 0
495977328
1
18
Returns: 0
760255090
15
10
Returns: 0
44338459
11
8
Returns: 0
515495838
12
20
Returns: 0
578962801
12
14
Returns: 0
313355216
15
10
Returns: 0
199756940
16
16
Returns: 0
633285903
8
20
Returns: 0
542777131
20
11
Returns: 0
768205692
8
11
Returns: 0
890397417
8
6
Returns: 0
390859791
15
19
Returns: 0
114098857
17
2
Returns: 0
81398939
16
17
Returns: 0
765652160
18
18
Returns: 0
890746764
19
7
Returns: 0
453213779
7
17
Returns: 0
312469788
2
7
Returns: 0
339607260
20
16
Returns: 0
706009239
13
12
Returns: 0
238498821
16
11
Returns: 0
200204381
14
10
Returns: 0
471124768
11
15
Returns: 0
806529479
5
12
Returns: 0
464186448
10
7
Returns: 0
981236291
20
20
Returns: 0
523192449
18
1
Returns: 0
763520300
20
10
Returns: 0
470326824
1
10
Returns: 0
833798594
8
2
Returns: 0
572922340
18
19
Returns: 0
914283208
3
9
Returns: 0
488383927
8
10
Returns: 0
700018184
18
20
Returns: 0
268134363
9
20
Returns: 0
220198716
15
8
Returns: 0
443316236
2
13
Returns: 0
18448224
14
13
Returns: 0
918163715
15
4
Returns: 0
562991358
6
6
Returns: 0
33543863
12
7
Returns: 0
597473795
12
13
Returns: 0
855680805
19
8
Returns: 0
987916001
1
7
Returns: 0
995746504
8
16
Returns: 0
95035236
19
3
Returns: 0
632118226
6
17
Returns: 0
426497722
2
6
Returns: 0
528229349
20
12
Returns: 0
495179468
20
3
Returns: 0
403178593
15
17
Returns: 0
549857533
11
14
Returns: 0
274611091
5
1
Returns: 0
695569666
11
15
Returns: 0
708723826
12
11
Returns: 0
645136679
2
18
Returns: 0
713683430
12
14
Returns: 0
207467411
13
19
Returns: 0
116558540
11
4
Returns: 0
37598751
12
10
Returns: 0
552613906
14
10
Returns: 0
813352610
15
14
Returns: 0
795162365
12
13
Returns: 0
650885241
4
19
Returns: 0
432923613
17
3
Returns: 0
737822405
14
4
Returns: 0
346819615
19
14
Returns: 0
734458802
6
20
Returns: 0
226809675
4
19
Returns: 0
117136576
14
5
Returns: 0
13776769
17
10
Returns: 0
558836438
2
4
Returns: 0
79205764
20
14
Returns: 0
133097978
5
11
Returns: 0
391281106
20
2
Returns: 0
436770843
16
17
Returns: 0
992753252
9
9
Returns: 0
16321074
9
15
Returns: 0
500776160
6
10
Returns: 0
702089957
15
8
Returns: 0
8
1
2
Returns: 1
24
2
2
Returns: 1
16
1
3
Returns: 1
96
3
3
Returns: 2
17408
10
10
Returns: 6
4
1
1
Returns: 0
1000000
20
20
Returns: 7
8
20
20
Returns: 4
536870912
20
20
Returns: 20
408
20
20
Returns: 4
4
8
1
Returns: 2
100
5
3
Returns: 1
805306368
20
20
Returns: 19
128
1
1
Returns: 0
11
3
1
Returns: 0
1000000000
20
20
Returns: 0
36
4
2
Returns: 1
3
10
10
Returns: 1
239
1
1
Returns: 0
33
5
10
Returns: 0
3
2
2
Returns: 1
1111111
1
1
Returns: 0
1000
20
20
Returns: 4
7952
2
2
Returns: 0
20
3
1
Returns: 0
999999999
1
1
Returns: 0
939524096
20
10
Returns: 18
268435456
20
20
Returns: 20
4564
20
20
Returns: 3
17408
20
20
Returns: 11
696320000
19
17
Returns: 6
174080000
13
15
Returns: 0
157
1
1
Returns: 0
5
1
1
Returns: 0
8192
8
3
Returns: 2
3
1
20
Returns: 0
8543545
20
20
Returns: 0
768
6
5
Returns: 5
9
2
8
Returns: 0
15
20
20
Returns: 1
100
1
1
Returns: 0
4096
20
20
Returns: 13
3
20
1
Returns: 1
16
1
2
Returns: 0
99999997
20
20
Returns: 0
3
20
20
Returns: 1
16
3
1
Returns: 0
10
1
2
Returns: 0
2
1
1
Returns: 1
20000000
20
20
Returns: 4
314658888
7
5
Returns: 0
2
10
10
Returns: 2
564787
15
15
Returns: 0
1048576
20
20
Returns: 20
2048
15
5
Returns: 12
2
3
3
Returns: 2
268435456
10
10
Returns: 10
15
1
1
Returns: 0
256
1
4
Returns: 1
131072
4
4
Returns: 2
24018
20
20
Returns: 2
10000
20
20
Returns: 5
100000000
20
3
Returns: 1
10
3
20
Returns: 1
4194304
20
20
Returns: 20
3
1
1
Returns: 0
17416
10
10
Returns: 0
24
1
3
Returns: 0
123
20
20
Returns: 1
16
20
20
Returns: 5
12
1
2
Returns: 0
10
2
6
Returns: 0
12
2
2
Returns: 1
2
4
6
Returns: 2
87
4
6
Returns: 0
32
2
5
Returns: 2
5
4
6
Returns: 1
7
8
9
Returns: 1
48
4
2
Returns: 2
10
1
20
Returns: 0
24
1
1
Returns: 0
4
2
3
Returns: 2
17
9
19
Returns: 1
56
9
2
Returns: 4
24
12
1
Returns: 2
1
20
20
Returns: 1
3633
5
5
Returns: 0
1
8
8
Returns: 1
25553
20
19
Returns: 1
20
20
20
Returns: 3
200
20
20
Returns: 4
1024
3
3
Returns: 0
24
2
1
Returns: 0
1024
20
20
Returns: 11
24
5
3
Returns: 4
1000000
1
1
Returns: 0
16
2
1
Returns: 0
1048576
1
5
Returns: 1