Problem Statement
The rabbits have expressed their preferences to Taro and Hanako. The i-th rabbit wants an integer between 1 and maxNumber[i], inclusive. Taro and Hanako must obey the preferences of all their rabbits.
Return the number of ways they can assign numbers to their rabbits, modulo 1,000,000,007. If it's impossible to assign distinct integers to the rabbits, return 0.
Definition
- Class:
- RabbitNumbering
- Method:
- theCount
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int theCount(int[] maxNumber)
- (be sure your method is public)
Constraints
- maxNumber will contain between 1 and 50 elements, inclusive.
- Each element of maxNumber will be between 1 and 1,000, inclusive.
Examples
{5}
Returns: 5
They can assign any number between 1 and 5, inclusive, to the only rabbit.
{4, 4, 4, 4}
Returns: 24
All permutations of {1, 2, 3, 4} are possible.
{5, 8}
Returns: 35
{2, 1, 2}
Returns: 0
{25, 489, 76, 98, 704, 98, 768, 39, 697, 8, 56, 74, 36, 95, 87, 2, 968, 4, 920, 54, 873, 90}
Returns: 676780400
{190}
Returns: 190
{122, 123}
Returns: 14884
{472, 478, 306}
Returns: 68603976
{14, 4, 18, 11}
Returns: 7200
{2, 2, 5, 3, 5}
Returns: 4
{44, 23, 56, 22, 16, 57, 50, 56, 56, 84, 25, 52, 45, 16, 66, 39, 43, 17, 50, 14, 31, 71, 76, 58, 62, 56, 56, 49, 57, 7, 27, 37, 37, 48, 66, 33, 53}
Returns: 912191125
{41, 51}
Returns: 2050
{20, 29, 22, 44, 12, 35, 41, 68, 46, 56, 13, 44, 53, 25}
Returns: 156265080
{3, 12, 14, 17, 9, 26, 11, 23, 6, 17, 8, 18, 28, 23, 17, 16, 13, 21, 21, 22, 10, 30, 27, 23, 5}
Returns: 489700007
{20, 17, 4, 8}
Returns: 7140
{10, 34, 30, 24, 13, 45, 21, 43, 40, 7, 37, 50, 14, 47, 11, 35, 4, 50, 17, 44, 38, 8, 28, 8, 23, 2, 19, 42, 38, 16, 6, 18, 49, 25, 5, 40, 15, 27, 33, 43, 32, 32, 28, 19, 29, 2, 21, 48, 23, 10}
Returns: 268435456
{48, 21, 41, 32, 18, 49, 68, 39, 47, 39, 45, 11, 4, 45, 48, 17, 56, 59, 30, 2, 47, 31, 41, 27, 62, 34, 50, 9, 21, 30, 25, 46, 43, 41, 14, 21, 57, 35, 27, 47, 64, 43, 9, 38, 51, 34, 31, 33, 22}
Returns: 96783208
{277}
Returns: 277
{44, 26, 15, 24, 34, 8, 20, 38, 4, 22, 27, 23, 35, 41, 27, 38, 31, 20, 23}
Returns: 877427600
{40, 8, 46, 46, 2, 27, 19, 15, 40, 28, 22, 34, 14, 39, 31, 28, 39, 3, 31, 37, 19, 23, 23, 27, 29, 32, 15, 34, 23, 15, 23, 39, 34, 39}
Returns: 581883665
{965}
Returns: 965
{427, 166}
Returns: 70716
{165, 405, 874}
Returns: 58127520
{830, 822, 778, 225}
Returns: 555824674
{420, 380, 38, 839, 626}
Returns: 652805463
{229, 528, 772, 56, 321, 403, 762, 677, 806, 75, 280, 34, 977, 289, 798, 343, 698, 758, 939, 440, 383, 876, 262, 283, 492, 967, 675, 328, 319}
Returns: 801937806
{712, 985, 240, 450}
Returns: 132426675
{280, 626, 841, 850, 577, 423, 514, 16, 140, 494, 716, 886, 890, 889, 685, 532, 89, 786, 423, 652, 955, 284, 244, 214, 984, 268, 535, 597, 398}
Returns: 237178289
{620, 146, 888, 516, 84, 670, 454, 271, 779, 786, 978, 101, 354, 584, 596, 554, 592, 943, 288, 903, 98, 145, 354, 698, 810, 779, 126, 90, 190, 761, 545, 338, 199, 239, 58, 520, 889, 484, 293, 701, 91, 343, 586, 570, 169, 176}
Returns: 499609145
{64, 327, 767, 376, 724, 763, 615, 75, 912, 840, 812, 419, 962, 58, 44, 745, 876, 824, 272, 473, 280}
Returns: 661838298
{6}
Returns: 6
{108, 29}
Returns: 3103
{25, 4, 14}
Returns: 1196
{9, 564, 463, 1}
Returns: 2068968
{2, 287, 294, 260, 8}
Returns: 297484320
{26, 284, 692}
Returns: 5077020
{67, 578, 552, 268, 10, 147, 89, 348, 20, 384, 4, 152, 407, 26, 116, 53, 56, 28, 17, 101, 150, 2, 42, 5, 8, 10, 27}
Returns: 239341733
{69, 4, 7, 45, 180, 9, 3, 58, 2, 263, 86, 70, 86, 162, 5, 19, 315}
Returns: 256996107
{367, 20, 287, 22, 140, 439, 693, 288, 124, 37, 16, 82, 39, 287, 49, 5, 374, 12, 418, 35, 56, 12, 137, 362, 326, 15, 52, 2}
Returns: 205386743
{24, 100, 628, 9, 161, 22, 143, 110, 166, 49, 2, 142, 1, 4, 60, 58, 121, 9, 12, 31, 23, 61, 22, 69, 1, 550, 11, 85, 21, 22, 101, 37, 332}
Returns: 0
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}
Returns: 512907687
{1000}
Returns: 1000
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: 0
{1}
Returns: 1
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}
Returns: 1
{25, 489, 76, 98, 704, 98, 768, 39, 697, 8, 56, 74, 36, 95, 87, 2, 968, 4, 920, 54, 873, 90 }
Returns: 676780400
{5, 7 }
Returns: 30
{1000, 1000, 1000, 1000 }
Returns: 10987042
{530, 775, 820, 727, 734, 420, 687, 338, 695, 185, 431, 528, 429, 8, 857, 541, 988, 123, 827, 992, 495, 129, 273, 338, 534, 97, 405, 711, 88, 101, 728, 505, 736, 805, 836, 85, 298, 381, 943, 464, 71, 49, 668, 911, 691, 80, 663, 674, 950, 363 }
Returns: 455673152
{45, 45, 45, 34, 456, 444, 333 }
Returns: 93026007
{25, 489, 76, 98, 704, 98, 768, 39, 697, 8, 999, 74, 36, 95, 87, 2, 968, 4, 920, 999, 999, 909 }
Returns: 690914420
{25, 489, 76, 98, 704, 98, 798, 39, 697, 8, 56, 74, 36, 95, 87, 2, 968, 4, 920, 54, 873, 90 }
Returns: 703851616
{1000, 1000, 1000, 1000, 1000, 1000, 234, 324, 345, 654 }
Returns: 657239485
{1000, 1000, 1000, 1000, 1000 }
Returns: 943093762
{999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999 }
Returns: 210504217
{2, 5, 125, 985, 657, 45, 11, 92, 12, 58, 125, 526, 548, 14, 54, 981, 126, 853, 265, 485, 123, 945, 12, 325, 425, 125, 365, 156, 165, 9, 574, 125 }
Returns: 822647744
{25, 489, 76, 98, 704, 98, 768, 39, 697, 8, 56, 74, 36, 95, 87, 2, 968, 4, 920, 54, 873, 90, 77, 78, 79, 80, 90, 31, 34, 35, 36, 37, 38, 39, 40, 567, 568, 569, 570, 234, 546 }
Returns: 904675131
{999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999 }
Returns: 130223370
{1, 2 }
Returns: 1
{1000, 1000, 1000, 1000, 1000, 999, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 997, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 997 }
Returns: 458059245
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }
Returns: 512907687
{1000, 1000, 1000, 1000, 1000, 1000 }
Returns: 378286624
{1000, 999, 1000, 998, 1000, 1000, 1000, 1000, 1000, 789, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }
Returns: 403161038
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }
Returns: 112594051