Problem Statement
A sum pyramid is a two-dimensional arrangement of numbers into a pyramid-like shape in which each number (except for the numbers in the bottom row) is the sum of the two numbers that are diagonally below its place. Here's an example of a sum pyramid:
25 12 13 7 5 8
Note that 12 = 7+5, 13 = 5+8, and 25 = 12+13.
Each row of the sum pyramid is called a level. The sum pyramid shown above has three levels. Note that the number of elements in the bottom row is equal to the number of levels.
You are given the
- All numbers in the pyramid are nonnegative integers.
- The pyramid has levels levels.
- The number on the top of the pyramid is top.
Compute and return the number of such pyramids, modulo 10^9 + 7.
Definition
- Class:
- SumPyramid
- Method:
- countPyramids
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int countPyramids(int levels, int top)
- (be sure your method is public)
Constraints
- levels will be between 1 and 1000, inclusive.
- top will be between 0 and 1000, inclusive.
Examples
1
47
Returns: 1
In this case the only valid pyramid is just the single number 47.
2
10
Returns: 11
Three of the eleven valid pyramids: 10 10 10 10 0 4 6 1 9
3
2
Returns: 4
The four pyramids look as follows: 2 2 2 2 2 0 1 1 1 1 0 2 2 0 0 1 0 1 0 1 0 0 0 2
5
7
Returns: 18
7
815
Returns: 160478559
8
990
Returns: 773698570
6
697
Returns: 613993800
10
917
Returns: 884242392
554
832
Returns: 1393
903
232
Returns: 233
4
0
Returns: 1
372
592
Returns: 1037
5
720
Returns: 121903681
9
746
Returns: 736882732
866
342
Returns: 343
1
1
Returns: 1
5
1000
Returns: 448070112
3
2
Returns: 4
9
635
Returns: 245496142
259
99
Returns: 100
9
994
Returns: 521367250
245
828
Returns: 3410
692
893
Returns: 1300
12
1000
Returns: 103036065
9
1000
Returns: 763519115
3
1
Returns: 2
12
683
Returns: 10135404
572
588
Returns: 625
384
733
Returns: 1436
7
520
Returns: 241623438
10
779
Returns: 277767336
2
1
Returns: 2
35
574
Returns: 32515
6
792
Returns: 147649033
7
907
Returns: 869173437
5
732
Returns: 130142464
792
426
Returns: 427
2
2
Returns: 3
4
1
Returns: 2
224
482
Returns: 1114
569
944
Returns: 1699
5
783
Returns: 169901424
11
718
Returns: 41071636
11
661
Returns: 24212808
37
128
Returns: 570
1
0
Returns: 1
10
870
Returns: 606297720
1000
0
Returns: 1
9
905
Returns: 838038828
981
247
Returns: 248
5
532
Returns: 36901575
12
767
Returns: 19935858
6
762
Returns: 949817869
10
1000
Returns: 659293026
1
3
Returns: 1
6
1000
Returns: 607937230
3
0
Returns: 1
12
621
Returns: 5928774
268
365
Returns: 564
8
512
Returns: 154852630
11
960
Returns: 289866525
7
700
Returns: 316079985
620
361
Returns: 362
11
790
Returns: 76818146
10
504
Returns: 15211669
705
361
Returns: 362
950
715
Returns: 716
9
982
Returns: 63608709
861
746
Returns: 747
2
3
Returns: 4
781
200
Returns: 201
4
2
Returns: 3
294
900
Returns: 3150
12
763
Returns: 19333074
616
350
Returns: 351
342
100
Returns: 101
6
631
Returns: 377748800
7
714
Returns: 474634651
665
892
Returns: 1351
5
680
Returns: 97239321
393
520
Returns: 779
8
500
Returns: 133545935
6
675
Returns: 524901860
937
957
Returns: 1002
8
552
Returns: 248181934
7
1000
Returns: 345692072
12
726
Returns: 14421861
1
2
Returns: 1
3
3
Returns: 6
11
617
Returns: 15742850
245
807
Returns: 3200
792
829
Returns: 908
11
1000
Returns: 386094178
8
1000
Returns: 508496153
8
837
Returns: 586538607
763
112
Returns: 113
2
0
Returns: 1
1000
1000
Returns: 1005
4
3
Returns: 6
10
969
Returns: 318615441
100
100
Returns: 105
7
614
Returns: 621360157
5
5
Returns: 10