При множенні мономерів на основі Мільнора для алгебри Стіенрода частина алгоритму передбачає перерахування певних "допустимих матриць".
Дано два списки невід’ємних цілих чисел r 1 , ..., r m і s 1 , ..., s n , матриця невід'ємних цілих чисел X
допустимо, якщо
Сума j-го стовпця менша або дорівнює s j :
Сума i-го рядка, зважена на потужність 2, менша або дорівнює r i :
Завдання
Напишіть програму, яка бере пару списків r 1 , ..., r m і s 1 , s 1 , ..., s n та обчислює кількість допустимих матриць для цих списків. Ваша програма може додатково вважати m і n додатковими аргументами, якщо це необхідно.
Ці цифри можуть бути введені в будь-якому форматі, який подобається, наприклад, згруповані в списки або закодовані в одинарний або що-небудь інше.
Вихід повинен бути додатним цілим числом
- Застосовуються стандартні лазівки.
Оцінка балів
Це код гольфу: найкоротше рішення в байтах.
Приклади:
Для [2]
і [1]
є дві допустимі матриці:
Для [4]
і [1,1]
є три допустимі матриці:
Для [2,4]
і [1,1]
є п'ять допустимих матриць:
Тестові приклади:
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