Podczas mnożenia monomialów w podstawie Milnora dla algebry Steenroda część algorytmu obejmuje wyliczenie pewnych „dopuszczalnych macierzy”.
Biorąc pod uwagę dwie listy nieujemnych liczb całkowitych r 1 , ..., r m oraz s 1 , ..., s n , macierz nieujemnych liczb całkowitych X
jest dozwolone, jeśli
Suma kolumnie j jest mniejsza lub równa s j :
Suma-tego rzędu ważony potęgi 2 jest mniejsza niż lub równa r I :
Zadanie
Napisz program, który pobiera parę list r 1 , ..., r m i s 1 , s 1 , ..., s n i oblicza liczbę dopuszczalnych macierzy dla tych list. Twój program może opcjonalnie wziąć m i n jako dodatkowe argumenty, jeśli zajdzie taka potrzeba.
Liczby te mogą być wprowadzane w dowolnym formacie, który lubią, na przykład pogrupowane w listy lub zakodowane jako jednoargumentowe lub cokolwiek innego.
Wyjście powinno być dodatnią liczbą całkowitą
- Obowiązują standardowe luki.
Punktacja
To jest kod golfowy: wygrywa najkrótsze rozwiązanie w bajtach.
Przykłady:
Dla [2]
i [1]
istnieją dwie dopuszczalne matryce:
Dla [4]
i [1,1]
istnieją trzy dopuszczalne macierze:
Dla [2,4]
i [1,1]
istnieje pięć dopuszczalne macierze:
Przypadki testowe:
Input: [1], [2]
Output: 1
Input: [2], [1]
Output: 2
Input: [4], [1,1]
Output: 3
Input: [2,4], [1,1]
Output: 5
Input: [3,5,7], [1,2]
Output: 14
Input: [7, 10], [1, 1, 1]
Output: 15
Input: [3, 6, 16, 33], [0, 1, 1, 1, 1]
Output: 38
Input: [7, 8], [3, 3, 1]
Output: 44
Input: [2, 6, 15, 18], [1, 1, 1, 1, 1]
Output: 90
Input: [2, 6, 7, 16], [1, 3, 2]
Output: 128
Input: [2, 7, 16], [3, 3, 1, 1]
Output: 175