При умножении мономов в базисе Милнора для алгебры Стинрода часть алгоритма включает перечисление определенных «допустимых матриц».
Даны два списка неотрицательных целых чисел 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