Problem Statement
You are given a
- The number contains at most n digits.
- The number does not contain four consecutive '4' digits. For example, 43444124 is allowed, but 45444474 is not.
- The number of digits in the number is not a multiple of any of the integers greater than 10 that contain only '4' in their decimal representations (44, 444, 4444, 44444, ...).
Return the total count of these numbers modulo 1000000007.
Definition
- Class:
- AvoidFour
- Method:
- count
- Parameters:
- long
- Returns:
- int
- Method signature:
- int count(long n)
- (be sure your method is public)
Constraints
- n will be between 1 and 40000000000 (4e10), inclusive.
Examples
4
Returns: 9998
Of all the 9999 positive integers containing 1, 2, 3 or 4 digits, 4444 is the only one that contains four consecutive '4' digits.
5
Returns: 99980
The numbers to ignore are: 4444, 44440, 44441, 44442, ..., 44449, 14444, 24444, 34444, 54444, ... , 94444.
87
Returns: 576334228
88
Returns: 576334228
88 is a multiple of 44, so all numbers with 88 digits are ignored.
4128
Returns: 547731225
124235233
Returns: 450715451
12423442312
Returns: 123527064
40000000000
Returns: 403544996
12345612345
Returns: 20960721
5235533
Returns: 765857807
1212121212
Returns: 768964375
21990232555
Returns: 403032192
12228821822
Returns: 477554622
6447712037
Returns: 376573559
8073844796
Returns: 761111360
5783623550
Returns: 587096534
1807404079
Returns: 490532649
29611455945
Returns: 191714315
35180076445
Returns: 782092064
20120108249
Returns: 822533749
10893832830
Returns: 255023821
11651476690
Returns: 766005837
15468092273
Returns: 812195616
4884
Returns: 210493466
1
Returns: 9
34359738368
Returns: 643694717
34359738367
Returns: 957658113
9038402876
Returns: 763474046
31893635726
Returns: 688734791
74
Returns: 278144199
32
Returns: 30190092
7
Returns: 9996299
93
Returns: 135211704
85
Returns: 949544466
317
Returns: 93343172
243
Returns: 688951137
699
Returns: 752702118
946
Returns: 264393876
321
Returns: 226136547
3500
Returns: 752802741
4933
Returns: 142178909
4606
Returns: 686144286
6034
Returns: 219915012
8776
Returns: 631585663
51483
Returns: 448697209
50514
Returns: 389370082
72451
Returns: 825438325
66652
Returns: 493196037
93642
Returns: 524340823
281019
Returns: 3209496
376332
Returns: 215058437
784848
Returns: 239219938
409027
Returns: 964656345
268763
Returns: 734441952
3987451
Returns: 535175259
5857402
Returns: 879937535
7155817
Returns: 806448713
3972740
Returns: 28191424
4158281
Returns: 92842090
38077138
Returns: 210733721
46301347
Returns: 169293426
46312434
Returns: 233207425
42375156
Returns: 384808146
71781953
Returns: 998641866
966435215
Returns: 450967466
259677529
Returns: 276608087
334507712
Returns: 399231167
871452297
Returns: 512943692
497304209
Returns: 792368826
8208477840
Returns: 781715876
1154892128
Returns: 943046852
9170386076
Returns: 89244117
4334094703
Returns: 871428832
1320912122
Returns: 629733010
27655026219
Returns: 615319089
16946347606
Returns: 938727117
37744112749
Returns: 242850654
35459749691
Returns: 887520760
13741905231
Returns: 760825989
21349399602
Returns: 903069362
9907145697
Returns: 631008825
12885196370
Returns: 151446149
28805065336
Returns: 851363187
27559234713
Returns: 678644655
2633540365
Returns: 115472565
34166345646
Returns: 900878584
39358551595
Returns: 622093845
35802772425
Returns: 653000819
18784266286
Returns: 831338744
7847238840
Returns: 674860310
17956033142
Returns: 337937489
12701773268
Returns: 455179837
7887224628
Returns: 946956564
7214014953
Returns: 124256406
31810905501
Returns: 336439205
29288141115
Returns: 749665702
34374754809
Returns: 461616098
32175804742
Returns: 412023161
12649519850
Returns: 468834453
5656
Returns: 317574755
39999999997
Returns: 512730467
21704497
Returns: 893208456