Problem Statement
Bonnie later discovered that some of those integers can even be represented by more than one possible pair. For example, 25 can be represented as 0*0 + 5*5, and it can also be represented as 3*3 + 4*4.
She has defined the score of an integer as the number of different ways it can be represented as the sum of the squares of two non-negative integers. The order of the two squared integers is not important. In other words, a*a + b*b is equivalent to b*b + a*a, so they should only count once in the score. So, 25 has a score of 2, 2 has a score of 1 (2 = 1*1 + 1*1), 1 also has a score of 1 (1 = 0*0 + 1*1) and 3 has a score of 0.
Bonnie needs your help in solving the following problem. She wants to find the integer between lowerBound and upperBound, inclusive, with the maximum score. If multiple integers have the same highest score, return the largest among them.
Definition
- Class:
- MaximumScoredNumber
- Method:
- getNumber
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int getNumber(int lowerBound, int upperBound)
- (be sure your method is public)
Constraints
- upperBound will be between 0 and 10000, inclusive.
- lowerBound will be between 0 and upperBound, inclusive.
Examples
0
2
Returns: 2
In the range 0 to 2, the numbers have the following scores: 0 has a score of 1: 0 = 0*0 + 0*0 1 has a score of 1: 1 = 0*0 + 1*1 2 has a score of 1: 2 = 1*1 + 1*1 All of them have the same score. Number 2 is the biggest so it is returned.
0
30
Returns: 25
25 is the only number between 0 and 30 having a score of 2.
0
0
Returns: 0
100
101
Returns: 100
5
99
Returns: 85
0
10000
Returns: 9425
0
9424
Returns: 5525
9424
9424
Returns: 9424
10000
10000
Returns: 10000
3
3
Returns: 3
5
5000
Returns: 4225
0
5524
Returns: 4225
1
5525
Returns: 5525
2393
7971
Returns: 5525
2205
7829
Returns: 5525
5737
8673
Returns: 8450
1048
3787
Returns: 3770
1109
1577
Returns: 1525
6457
9047
Returns: 8450
250
1034
Returns: 1025
1226
8869
Returns: 5525
321
493
Returns: 425
279
7777
Returns: 5525
861
1846
Returns: 1625
5986
9251
Returns: 8450
511
3369
Returns: 3250
1022
2607
Returns: 2465
738
1375
Returns: 1105
5191
8700
Returns: 5525
2639
6681
Returns: 5525
111
1978
Returns: 1885
3828
4173
Returns: 3965
2225
6721
Returns: 5525
50
388
Returns: 325
3638
5815
Returns: 5525
8080
9351
Returns: 8450
4275
4589
Returns: 4505
15
41
Returns: 25
212
1902
Returns: 1885
485
2812
Returns: 2665
4286
7592
Returns: 5525
1344
4042
Returns: 3965
3899
6351
Returns: 5525
3502
5718
Returns: 5525
1360
2022
Returns: 1885
825
2236
Returns: 2210
999
3692
Returns: 3625
3693
9798
Returns: 9425
36
77
Returns: 65
461
1365
Returns: 1105
718
1069
Returns: 1025
645
9116
Returns: 5525
443
8870
Returns: 5525
552
791
Returns: 725
5807
6523
Returns: 6500
627
6343
Returns: 5525
180
2456
Returns: 2405
762
4437
Returns: 4225
6216
7542
Returns: 7225
4309
9302
Returns: 5525
695
746
Returns: 725
590
2991
Returns: 2665
1281
1373
Returns: 1325
6042
7784
Returns: 7225
1382
3548
Returns: 3485
797
1922
Returns: 1885
319
703
Returns: 650
2932
7635
Returns: 5525
351
2135
Returns: 2125
2283
2940
Returns: 2665
1724
3213
Returns: 3145
1886
3003
Returns: 2665
407
428
Returns: 425
708
2958
Returns: 2665
40
4395
Returns: 4225
269
317
Returns: 305
1775
4103
Returns: 3965
5851
8221
Returns: 8125
4596
9771
Returns: 9425
6953
8729
Returns: 8450
3201
3376
Returns: 3250
3999
8693
Returns: 5525
3423
5251
Returns: 4225
4605
7812
Returns: 5525
1654
3068
Returns: 2665
1882
3136
Returns: 2665
8134
8191
Returns: 8177
3362
3425
Returns: 3425
5824
9116
Returns: 8450
1252
4464
Returns: 4225
1442
4236
Returns: 4225
168
849
Returns: 845
563
5757
Returns: 5525
1214
1947
Returns: 1885
571
3805
Returns: 3770
7544
8831
Returns: 8450
532
1297
Returns: 1105
2117
7521
Returns: 5525
1102
4360
Returns: 4225
4121
5380
Returns: 4225
1836
6907
Returns: 5525
4
6
Returns: 5
5028
5080
Returns: 5050
2278
3841
Returns: 3770
3152
7151
Returns: 5525
1261
3025
Returns: 2665
29
92
Returns: 85
222
284
Returns: 265
2507
4222
Returns: 3965
8325
9112
Returns: 8450
70
1332
Returns: 1105
1023
8823
Returns: 5525
5844
7312
Returns: 7225
60
705
Returns: 650
1090
6142
Returns: 5525
1194
6145
Returns: 5525
3899
4379
Returns: 4225
72
5867
Returns: 5525
2791
4911
Returns: 4225
1805
7784
Returns: 5525
115
4189
Returns: 3965
6850
9163
Returns: 8450
1677
6868
Returns: 5525
7340
9137
Returns: 8450
82
740
Returns: 725
269
2164
Returns: 2125
474
1027
Returns: 1025
922
3333
Returns: 3250
1903
3497
Returns: 3485
7625
9758
Returns: 9425
1315
5057
Returns: 4225
1638
7035
Returns: 5525
2150
2771
Returns: 2665
5
84
Returns: 65
72
73
Returns: 73
7
7
Returns: 7
25
169
Returns: 169
1
9999
Returns: 9425
20
25
Returns: 25
25
30
Returns: 25
0
3
Returns: 2
0
16
Returns: 16
24
26
Returns: 25
0
8
Returns: 8
9971
9971
Returns: 9971
1
4
Returns: 4
12
13
Returns: 13