Problem Statement
One group of bunnies made a simple computer that calculates the following function f:
For a positive integer x,
- f(x) = x / m if x is a multiple of m.
- f(x) = x + 1 otherwise.
For a positive integer x, we define a sequence {Bk} by B0 = x and Bk+1 = f(Bk). Let g(x) be the smallest index k of this sequence such that Bk = 1. Calculate the number of positive integers x satisfying g(x) = n, and return the answer modulo 1,000,000,009.
Definition
- Class:
- BunnySequence
- Method:
- getNumber
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int getNumber(int m, int n)
- (be sure your method is public)
Notes
- For any positive integer x, there always exists k such that Bk = 1.
Constraints
- m will be between 2 and 1,000,000, inclusive.
- n will be between 0 and 1,000,000, inclusive.
Examples
5
3
Returns: 4
There are four positive integers x such that f(f(f(x))) = 1. The sequences {Bk} for them are as follows: 3 -> 4 -> 5 -> 1 20 -> 4 -> 5 -> 1 24 -> 25 -> 5 -> 1 125 -> 25 -> 5 -> 1
487
0
Returns: 1
B0 = 1 means x = 1.
19
10
Returns: 512
3
4
Returns: 6
10
487
Returns: 829515032
961028
988908
Returns: 1000000007
answer = MOD - 2
956197
966003
Returns: 1000000008
answer = MOD - 1
967981
985323
Returns: 0
answer = 0
951496
980267
Returns: 1
answer = 1
948272
954547
Returns: 2
answer = 2
2
0
Returns: 1
2
1
Returns: 1
2
2
Returns: 1
2
3
Returns: 2
2
4
Returns: 3
2
1000000
Returns: 472063836
3
0
Returns: 1
3
1
Returns: 1
3
2
Returns: 2
3
3
Returns: 3
3
4
Returns: 6
3
1000000
Returns: 41706358
4
0
Returns: 1
4
1
Returns: 1
4
2
Returns: 2
4
3
Returns: 4
4
4
Returns: 7
4
1000000
Returns: 376808075
1000000
0
Returns: 1
1000000
1
Returns: 1
1000000
2
Returns: 2
1000000
3
Returns: 4
1000000
4
Returns: 8
1000000
1000000
Returns: 985796960
999997
999997
Returns: 998224627
999997
999998
Returns: 996449245
999997
999999
Returns: 992898480
999997
1000000
Returns: 985796949
999998
999997
Returns: 998224628
999998
999998
Returns: 996449246
999998
999999
Returns: 992898483
999998
1000000
Returns: 985796956
999999
999997
Returns: 998224628
999999
999998
Returns: 996449247
999999
999999
Returns: 992898484
999999
1000000
Returns: 985796959
1000000
999997
Returns: 998224628
1000000
999998
Returns: 996449247
1000000
999999
Returns: 992898485
24281
24279
Returns: 87869530
24281
24280
Returns: 175739060
24281
24281
Returns: 351478119
24281
24282
Returns: 702956238
24281
24283
Returns: 405912466
288
286
Returns: 791489584
288
287
Returns: 582979159
288
288
Returns: 165958308
288
289
Returns: 331916616
288
290
Returns: 663833231
17
15
Returns: 16384
17
16
Returns: 32768
17
17
Returns: 65535
17
18
Returns: 131070
17
19
Returns: 262139
99
640524
Returns: 871506302
2
605659
Returns: 558827633
435704
482135
Returns: 510500089
419269
241
Returns: 725778777
121
58
Returns: 778819198
1093
4
Returns: 8
41996
9106
Returns: 13897020
8
185
Returns: 581276265
6
14780
Returns: 762925915
67821
1
Returns: 1
1376
29100
Returns: 234766752
7
776
Returns: 435455820
1850
2901
Returns: 60338749
16
5497
Returns: 592607699
12
1
Returns: 1
9
11
Returns: 1019
999199
999199
Returns: 754352623
231
42123
Returns: 552158526
10007
999999
Returns: 503760399
999997
999777
Returns: 22025332
102407
50000
Returns: 642595749
1337
1000000
Returns: 733364532