Problem Statement
You are expecting some friends. You are going to cut the cake into multiple pieces before the friends arrive.
When the friends arrive, you will divide the cake among them, using the following procedure: starting at the beginning of the cake, you will first give some consecutive pieces to your first friend, then some consecutive pieces to your second friend, and so on.
Of course, you want to be fair. That is, each of your friends should receive the same total amount of cake. (The number of pieces may be different for different friends, but the sum of their lengths must be the same.)
As we stated above, you want to cut the cake before your friends arrive. However, you don't know how many friends will actually come. You only know that their count will be a divisor of n smaller than n.
You are given the
Definition
- Class:
- MyVeryLongCake
- Method:
- cut
- Parameters:
- int
- Returns:
- int
- Method signature:
- int cut(int n)
- (be sure your method is public)
Constraints
- n will be between 2 and 1,000,000,000, inclusive.
Examples
6
Returns: 4
The best possible solution is to cut the cake into 4 pieces. Let's call the pieces A, B, C, and D, in order. Their lengths will be 2, 1, 1, and 2. As n=6, there will be 1, 2, or 3 friends. If there is just one friend, she gets all four pieces. If there are two friends, the first gets A+B and the second gets C+D. If there are three friends, the first gets A, the second gets B+C, and the third gets D. Note that the order of parts matters. For example, dividing the cake into parts of length 2, 1, 2, and 1 is not a valid solution.
3
Returns: 1
In this case, the only possible number of friends that will come to your house is 1. Hence, you don't even need to cut the cake, simply leave it in one piece.
15
Returns: 7
You are expecting 1, 3, or 5 friends.
1000000000
Returns: 600000000
223092870
Returns: 186597510
473828165
Returns: 117377861
209144467
Returns: 29877787
290540586
Returns: 207529002
829032593
Returns: 4631645
577007436
Returns: 384671628
924295281
Returns: 436755921
427401489
Returns: 142526433
577173928
Returns: 288586968
386071616
Returns: 225091136
97538621
Returns: 1
887608573
Returns: 52212285
901849846
Returns: 454104310
899842149
Returns: 299947401
840821047
Returns: 78115447
674100155
Returns: 134820035
2
Returns: 1
1000000000
Returns: 600000000
3
Returns: 1
999999999
Returns: 351353295
4
Returns: 2
999999998
Returns: 500724278
5
Returns: 1
999999997
Returns: 14679997
6
Returns: 4
999999996
Returns: 666666668
7
Returns: 1
999999995
Returns: 210044411
8
Returns: 4
999999994
Returns: 571428574
9
Returns: 3
999999993
Returns: 372549049
10
Returns: 6
999999992
Returns: 501003992
11
Returns: 1
999999991
Returns: 14925439
2
Returns: 1
536870912
Returns: 268435456
3
Returns: 1
387420489
Returns: 129140163
5
Returns: 1
244140625
Returns: 48828125
7
Returns: 1
282475249
Returns: 40353607
11
Returns: 1
214358881
Returns: 19487171
23
Returns: 1
148035889
Returns: 6436343
53
Returns: 1
418195493
Returns: 7890481
113
Returns: 1
163047361
Returns: 1442897
271
Returns: 1
19902511
Returns: 73441
997
Returns: 1
991026973
Returns: 994009
4001
Returns: 1
16008001
Returns: 4001
9973
Returns: 1
99460729
Returns: 9973
10301
Returns: 1
106110601
Returns: 10301
31607
Returns: 1
999002449
Returns: 31607
100003
Returns: 1
199999
Returns: 1
599999
Returns: 1
2999999
Returns: 1
29999999
Returns: 1
89999999
Returns: 1
599999971
Returns: 1
999999937
Returns: 1
999983
Returns: 1
2
Returns: 1
6
Returns: 4
30
Returns: 22
210
Returns: 162
2310
Returns: 1830
30030
Returns: 24270
510510
Returns: 418350
9699690
Returns: 8040810
460642897
Returns: 116010577
99799811
Returns: 19979
999983
Returns: 1
31607
Returns: 1
33331
Returns: 1
999999937
Returns: 1
700209804
Returns: 511936908
189167895
Returns: 107245143
999983
Returns: 1
633922289
Returns: 201965489
4333030
Returns: 2733190
6534290
Returns: 4536722
61370
Returns: 39482
655246046
Returns: 409695518
178487505
Returns: 101695185
31607
Returns: 1
546750000
Returns: 400950000
364500000
Returns: 267300000
656100000
Returns: 481140000
787320000
Returns: 577368000
874800000
Returns: 641520000
450000000
Returns: 330000000
984150000
Returns: 721710000
911250000
Returns: 668250000
729000000
Returns: 534600000
492075000
Returns: 360855000
777924000
Returns: 600112800
540225000
Returns: 416745000
907578000
Returns: 700131600
432180000
Returns: 333396000
555660000
Returns: 428652000
226894500
Returns: 175032900
463050000
Returns: 357210000
622339200
Returns: 480090240
533433600
Returns: 411505920
147061250
Returns: 96640250
762300000
Returns: 603900000
216090000
Returns: 166698000
914760000
Returns: 724680000
205439850
Returns: 162751050
332057880
Returns: 263058840
102910500
Returns: 81526500
719039475
Returns: 420217875
494133750
Returns: 374343750
903935340
Returns: 716104620
636693750
Returns: 504393750
755795040
Returns: 610827360
979642300
Returns: 669601660
163963800
Returns: 132514200
157907178
Returns: 113737338
274542345
Returns: 160446825
307041735
Returns: 189255495
123873750
Returns: 100113750
277477200
Returns: 224254800
738499580
Returns: 504776636
96192096
Returns: 73129056
304504200
Returns: 246097800
311424750
Returns: 245717550
193297650
Returns: 154913010
917751120
Returns: 724460880
567451500
Returns: 456475500
208288080
Returns: 170686800
728377650
Returns: 588668850
290603950
Returns: 204042670
490964760
Returns: 387561240
545044500
Returns: 440500500
604819761
Returns: 320363313
760014801
Returns: 402567633
83811156
Returns: 61746516
962914680
Returns: 781764984
627477565
Returns: 251879485
441833315
Returns: 196249955
883666630
Returns: 638083270
63509875
Returns: 25493875
985539555
Returns: 629709795
177518250
Returns: 142267050
184749825
Returns: 98591745
143198055
Returns: 91496295
885851725
Returns: 311464525
663918255
Returns: 424210095
184756
Returns: 115636
389025
Returns: 233505
2147950
Returns: 1491310
55709178
Returns: 40631514
307716915
Returns: 167311155
356425047
Returns: 151799607
858599504
Returns: 500575184
150
Returns: 110
10000008
Returns: 6666696
654987321
Returns: 221471361
12494582
Returns: 6252398
128
Returns: 64
181336933
Returns: 1
99999999
Returns: 41247999
179424673
Returns: 1
999999929
Returns: 1
100000007
Returns: 1
5100
Returns: 3820
2512058
Returns: 1256030