Problem Statement
Begin by writing down a zero. Then, repeat the following process forever:
- Copy the entire sequence, but change each zero into a one and vice versa.
- Append the copy to the current sequence.
The positions in the sequence are numbered sequentially, starting from zero.
To impress Elly you want to write a program which can quickly answer any question of the following type: "How many ones are in Elly's sequence at positions from L to R, inclusive?"
You are given the
Definition
- Class:
- EllysCode01
- Method:
- getOnes
- Parameters:
- long, long
- Returns:
- long
- Method signature:
- long getOnes(long L, long R)
- (be sure your method is public)
Constraints
- L and R will be between 0 and 10^18, inclusive.
- L will be less than or equal to R.
Examples
5
15
Returns: 5
The interval [5, 15] covers the digits 01101[00110010110]1001011001101001. This subsequence contains 5 ones, so the correct answer is 5.
101
185
Returns: 42
The answer is 42.
0
0
Returns: 0
The digit at index zero is 0.
1
1
Returns: 1
The digit at index one is 1.
1337
1337
Returns: 0
The digit at 1337-th position is 0.
12345
67890
Returns: 27772
5192834871235435
954971273487212547
Returns: 474889219307988557
123456789
987654321
Returns: 432098766
12345678910111213
13121110987654321
Returns: 387716038771554
0
1234567890
Returns: 617283945
0
10101010101010101
Returns: 5050505050505051
0
1000000000000000000
Returns: 500000000000000000
1
1000000000000000000
Returns: 500000000000000000
2
1000000000000000000
Returns: 499999999999999999
3
1000000000000000000
Returns: 499999999999999998
4
1000000000000000000
Returns: 499999999999999998
5
1000000000000000000
Returns: 499999999999999997
6
1000000000000000000
Returns: 499999999999999997
7
1000000000000000000
Returns: 499999999999999997
8
1000000000000000000
Returns: 499999999999999996
9
1000000000000000000
Returns: 499999999999999995
42
1000000000000000000
Returns: 499999999999999979
666
1000000000000000000
Returns: 499999999999999667
1337
1000000000000000000
Returns: 499999999999999331
9876543210
9876543210
Returns: 1
9876543211
9876543211
Returns: 0
9876543212
9876543212
Returns: 1
9876543213
9876543213
Returns: 0
9876543214
9876543214
Returns: 0
9876543215
9876543215
Returns: 1
9876543216
9876543216
Returns: 0
9876543217
9876543217
Returns: 1
9876543218
9876543218
Returns: 1
9876543219
9876543219
Returns: 0
100000000000000000
100000000000000001
Returns: 1
100000000000000001
100000000000000002
Returns: 2
100000000000000002
100000000000000003
Returns: 1
100000000000000003
100000000000000004
Returns: 1
100000000000000004
100000000000000005
Returns: 1
100000000000000005
100000000000000006
Returns: 0
100000000000000006
100000000000000007
Returns: 1
100000000000000007
100000000000000008
Returns: 2
100000000000000008
100000000000000009
Returns: 1
111111111111111111
222222222222222222
Returns: 55555555555555555
111111111111111111
333333333333333333
Returns: 111111111111111111
111111111111111111
444444444444444444
Returns: 166666666666666666
111111111111111111
555555555555555555
Returns: 222222222222222222
111111111111111111
666666666666666666
Returns: 277777777777777777
111111111111111111
777777777777777777
Returns: 333333333333333333
111111111111111111
888888888888888888
Returns: 388888888888888888
111111111111111111
999999999999999999
Returns: 444444444444444444
2
22
Returns: 11
4
60
Returns: 28
33
55
Returns: 11
19
35
Returns: 9
15
72
Returns: 28
23
69
Returns: 23
32
85
Returns: 27
75
97
Returns: 11
62
90
Returns: 14
55
68
Returns: 7
38
52
Returns: 8
35
84
Returns: 26
14
35
Returns: 11
10
71
Returns: 31
56
98
Returns: 22
12
85
Returns: 37
96
99
Returns: 2
18
33
Returns: 8
5
85
Returns: 40
54
75
Returns: 11
451890
867037
Returns: 207574
76230
321707
Returns: 122739
23006
973392
Returns: 475193
597330
937710
Returns: 170191
693524
877441
Returns: 91959
351444
404127
Returns: 26342
4990
796759
Returns: 395885
151726
941793
Returns: 395034
507736
975773
Returns: 234019
234304
369604
Returns: 67651
734318
992420
Returns: 129052
656059
698238
Returns: 21091
405953
957592
Returns: 275819
887618
929194
Returns: 20789
251839
762457
Returns: 255310
315642
516322
Returns: 100340
450580
495228
Returns: 22324
102066
343435
Returns: 120685
441144
524853
Returns: 41855
41448
903698
Returns: 431126
6716841653
6733903110
Returns: 8530728
7923936681
8131428423
Returns: 103745871
6071543706
7175866483
Returns: 552161389
2256257840
4436715194
Returns: 1090228677
3037217472
8870206823
Returns: 2916494676
4372915302
8594768308
Returns: 2110926504
3094625887
9841980128
Returns: 3373677122
809256995
3345182958
Returns: 1267962982
1716715741
9977210091
Returns: 4130247175
6535751986
8303379841
Returns: 883813928
714110645
8143319470
Returns: 3714604414
6295268740
7428933562
Returns: 566832412
828576915
3505065793
Returns: 1338244440
256457004
4196860997
Returns: 1970201997
176146776
8075908043
Returns: 3949880634
1182931648
6009871546
Returns: 2413469950
4187506007
6381789789
Returns: 1097141892
2947737076
9874076386
Returns: 3463169656
1629331725
9970742824
Returns: 4170705551
8128322970
8969288196
Returns: 420482613
7787369605059
39360987953813
Returns: 15786809174378
13695111260875
95310030362241
Returns: 40807459550683
63600672172716
78548068309743
Returns: 7473698068514
90492579177590
97240994539297
Returns: 3374207680854
10483371470955
97770770425231
Returns: 43643699477139
34861512857374
78461173023127
Returns: 21799830082877
12300494461742
36378610049400
Returns: 12039057793829
25681678798392
53317267881347
Returns: 13817794541478
27693590018128
76253554675065
Returns: 24279982328469
13678132492915
92378370503653
Returns: 39350119005369
40895753256768
87419343325065
Returns: 23261795034149
2028939142329
25701979874736
Returns: 11836520366203
64045489429859
92580558508268
Returns: 14267534539206
37385076415213
79773294320019
Returns: 21194108952403
38822302751837
78563015764488
Returns: 19870356506327
42210649705397
79629073110450
Returns: 18709211702527
33324907285930
91871580363689
Returns: 29273336538880
5578737234674
63897383206854
Returns: 29159322986091
42929264723150
83164515490405
Returns: 20117625383628
579485013284
25150343485285
Returns: 12285429236001
326861034622559754
421573677627030276
Returns: 47356321502235262
84400971293995011
259331576759215943
Returns: 87465302732610467
463845940912828416
779855300881004610
Returns: 158004679984088097
210589799605312027
984260243516132275
Returns: 386835221955410124
107231421256308937
687144491399569940
Returns: 289956535071630503
173551711086423117
811285499731939208
Returns: 318866894322758047
139880725825605972
419053614262815064
Returns: 139586444218604546
110478423637727797
291952205449675951
Returns: 90736890905974078
364768269648744387
469414999391978219
Returns: 52323364871616916
214502508631763298
450549923677533756
Returns: 118023707522885230
615558842213928697
714261038354538575
Returns: 49351098070304940
559799275165662759
819123640184841754
Returns: 129662182509589499
566854886931660613
891310522478738273
Returns: 162227817773538831
105259452319848079
441909642659419329
Returns: 168325095169785626
247709904124292700
480947869602487234
Returns: 116618982739097268
55133802461636570
100282036585790303
Returns: 22574117062076867
297564370292699716
810426923131754268
Returns: 256431276419527276
152472389910152787
376171948756359365
Returns: 111849779423103289
50580674105394668
368047066677070119
Returns: 158733196285837726
393398358587456117
582456023421502960
Returns: 94528832417023422
10
1000
Returns: 495
16
17
Returns: 1
0
1
Returns: 1
444848094108753
1729899977544778
Returns: 642525941718013
0
2
Returns: 2