Problem Statement
You are creating a storage management system. This system should create new PLU codes for new items. The requirements state that a PLU code must be a positive integer that does not contain three consecutive equal digits. For example, PLU codes 11211, 73399, 655 and 30 are valid PLU codes, but 11111, 73339, 555 and 3000 are invalid (they contain 111, 333, 555 and 000 respectively). For statistical purposes you want to count the number of invalid PLU codes.
You will be given an
Definition
- Class:
- PluCodeGenerator
- Method:
- countInvalidCodes
- Parameters:
- int
- Returns:
- int
- Method signature:
- int countInvalidCodes(int N)
- (be sure your method is public)
Constraints
- N will be between 1 and 1000000000, inclusive.
Examples
111
Returns: 0
The first invalid PLU code is 111, so there are no invalid PLU codes less than 111.
556
Returns: 5
The invalid PLU codes less than 556 are 111, 222, 333, 444 and 555.
1113
Returns: 13
The invalid PLU codes less than 1113 are 111, 222, 333, 444, 555, 666, 777, 888, 999, 1000, 1110, 1111 and 1112.
7346556
Returns: 323647
11
Returns: 0
19
Returns: 0
20
Returns: 0
111
Returns: 0
112
Returns: 1
222
Returns: 1
223
Returns: 2
998
Returns: 8
1001
Returns: 10
1002
Returns: 10
1000000000
Returns: 62190729
999999999
Returns: 62190728
100000000
Returns: 5351400
99999999
Returns: 5351399
10000000
Returns: 447570
9999999
Returns: 447569
1000000
Returns: 35919
999999
Returns: 35918
100000
Returns: 2700
99999
Returns: 2699
10000
Returns: 180
9999
Returns: 179
1000
Returns: 9
999
Returns: 8
100
Returns: 0
99
Returns: 0
10
Returns: 0
9
Returns: 0
1
Returns: 0
998998999
Returns: 61189728
777777777
Returns: 48156326
33333333
Returns: 1718933
123456789
Returns: 7558723
987654321
Returns: 60578006
192837465
Returns: 11252914
918273645
Returns: 56883815
100000001
Returns: 5351401
900000009
Returns: 55875257
900900900
Returns: 56004884
2812
Returns: 45
6078
Returns: 105
6826
Returns: 121
4806
Returns: 83
5555
Returns: 95
6303
Returns: 107
4284
Returns: 69
5032
Returns: 86
2418
Returns: 41
1147
Returns: 20
6519507
Returns: 283615
4630256
Returns: 204963
1478984
Returns: 62623
2398733
Returns: 105130
4757913
Returns: 209443
2923010
Returns: 124414
9718690
Returns: 428197
1749539
Returns: 71971
2830687
Returns: 120871
1740416
Returns: 71718
558049233
Returns: 34660122
773748451
Returns: 47231626
65493199
Returns: 3418849
492153196
Returns: 30165973
446438071
Returns: 27721865
8962471
Returns: 399872
297904289
Returns: 17799882
131594457
Returns: 7929315
234594457
Returns: 14469493
82646187
Returns: 4385439
116133419
Returns: 7130547
112343419
Returns: 6963992
651411671
Returns: 39722892
33951131
Returns: 1805485
33912431
Returns: 1804476
399658015
Returns: 24188413
49915345
Returns: 2614999
40358561
Returns: 2104621
64324829
Returns: 3366692
28215760
Returns: 1453695
949174849
Returns: 58560494
953087131
Returns: 58740081
933370331
Returns: 57728479
991564251
Returns: 60854751
971671565
Returns: 59768937
946708821
Returns: 58451558
943248479
Returns: 58201585
902763034
Returns: 56090610
941956165
Returns: 58144121
900077101
Returns: 55952349
900000007
Returns: 55875255
900030007
Returns: 55905255
900300007
Returns: 55982637
900900007
Returns: 56004783
100000001
Returns: 5351401
900000001
Returns: 55875249
999000001
Returns: 61190730
999999999
Returns: 62190728
193499343
Returns: 11286407
1000000000
Returns: 62190729