Problem Statement
- K >= 1.
- For all i, S[i] is a non-negative integer.
- S[1] + S[2] + ... + S[K] = N.
- S[1] mod M, S[2] mod M, ..., S[K] mod M are all different.
You are given a
Definition
- Class:
- DistinctRemainders
- Method:
- howMany
- Parameters:
- long, int
- Returns:
- int
- Method signature:
- int howMany(long N, int M)
- (be sure your method is public)
Constraints
- N will be between 1 and 10^18, inclusive.
- M will be between 1 and 50, inclusive.
Examples
3
2
Returns: 5
The 5 sequences are: (3) (0, 3) (1, 2) (2, 1) (3, 0)
3
3
Returns: 9
The 9 sequences are: (3) (1, 2) (2, 1) (0, 1, 2) (0, 2, 1) (1, 0, 2) (1, 2, 0) (2, 0, 1) (2, 1, 0)
58
1
Returns: 1
The only sequence is (58).
572
7
Returns: 922572833
1000000000000000000
20
Returns: 240297629
Watch out for overflows.
1
1
Returns: 1
1000000000000000000
50
Returns: 46857165
14
7
Returns: 643
7
14
Returns: 57
15
15
Returns: 2121
97
23
Returns: 768934218
1
20
Returns: 3
1
50
Returns: 3
2
7
Returns: 3
93
14
Returns: 718116655
6
2
Returns: 1
8473
3
Returns: 5651
40059
37
Returns: 914138702
858756
14
Returns: 698140627
3325264
2
Returns: 1
99726960
20
Returns: 602857538
405046580
2
Returns: 1
6709199525
13
Returns: 312260183
92774141998
29
Returns: 555712049
912490109202
3
Returns: 326883271
5073951506241
6
Returns: 598861277
64433690240928
2
Returns: 1
173767058179049
35
Returns: 487236212
7737496696886829
26
Returns: 843624497
95549062400722057
33
Returns: 293405701
319690881584892264
30
Returns: 626187333
4
1
Returns: 1
10
12
Returns: 299
991
23
Returns: 695583054
3130
4
Returns: 922030094
6998
14
Returns: 493245411
884994
21
Returns: 24078637
5615879
13
Returns: 798441238
93750616
13
Returns: 313501897
667860488
3
Returns: 445240327
5707439769
1
Returns: 1
64272166814
14
Returns: 243544564
477986576516
11
Returns: 98094246
4606736991870
9
Returns: 111082852
60881169868247
4
Returns: 723892939
392598014505174
12
Returns: 192249185
1429671065610848
13
Returns: 717138391
34533278621946847
31
Returns: 586731273
245299575173742828
14
Returns: 357350463
427783988761240522
47
Returns: 371449307
482273829627639113
4
Returns: 248716576
227091392807824344
19
Returns: 433082854
927736909704583337
10
Returns: 396475076
476282457179118177
35
Returns: 161075241
127572008851308845
5
Returns: 71426118
124918559510750750
16
Returns: 622052085
732591068249655412
22
Returns: 449342301
668126003465555919
8
Returns: 371382139
423953064949530647
15
Returns: 798649911
721181777663307639
46
Returns: 5816363
955361208302576247
37
Returns: 37396509
776066125740417664
16
Returns: 616443748
282399450093718453
30
Returns: 706241491
793663430571841969
6
Returns: 611994722
116764009883140394
42
Returns: 398644261
90403892428491992
37
Returns: 869771677
490189236877093361
48
Returns: 527504284
655845410602572598
43
Returns: 221794262
781804787448477614
49
Returns: 589605840
720343730613591728
7
Returns: 208289671
993293851500934210
9
Returns: 957411041
140402649375493885
50
Returns: 784795354
196693153802145406
11
Returns: 250848519
756378842767465288
21
Returns: 806609037
571702284006185944
44
Returns: 185789492
829124358688175621
43
Returns: 959786252
410293588970904228
29
Returns: 455746555
850011684922242067
37
Returns: 861781979
782811923016652338
46
Returns: 906670156
783877770011034090
23
Returns: 866276678
727737286228695814
16
Returns: 212815630
649920229735208654
28
Returns: 79599807
777517989043429657
29
Returns: 722198808
814895441298133647
30
Returns: 109189308
14963006823662992
16
Returns: 22445463
505292692323842888
42
Returns: 36508528
410803061604391380
25
Returns: 473478163
17341098467994024
36
Returns: 752034595
216404853972400785
37
Returns: 624762120
208575354064882855
38
Returns: 669159206
715034367818813278
38
Returns: 115471281
467771077419410734
21
Returns: 131733081
19479558867415190
6
Returns: 871083309
875931307701255497
18
Returns: 299370617
830789743755355385
20
Returns: 324571030
554074811793238223
45
Returns: 928845747
912818363093652897
37
Returns: 245478616
173837593383949663
40
Returns: 202744994
216349954416444224
50
Returns: 589161980
99999999999999999
50
Returns: 577168021
1000000000000
23
Returns: 558640185
1000000000000
30
Returns: 859815476
1000000000000000000
31
Returns: 293376536