在Python中编写计算可能谦虚矩阵的程序
假设我们有两个值 n 和 m。我们必须找到大小为 n x m 的可能谦虚矩阵的数量。当一个矩阵满足以下条件时,它被称为谦虚:
- 它恰好包含范围从1到n x m的每个元素
- 对于任意两个指数对(i1,j1)和(i2,j2),如果(i1 + j1) < (i2 + j2),则Mat [i1,j1] < Mat [i2,j2]应成立。
如果答案太大,则返回结果模10 ^ 9 + 7。
因此,如果输入如n = 2,m = 2,则输出将为2,因为有两个可能的矩阵 –
1 | 2 |
---|---|
3 | 4 |
和
1 | 3 |
---|---|
2 | 4 |
要解决这个问题,我们将遵循以下步骤−
- p:= 10 ^ 9 + 7
- result:= 值为1的列表
- 对于x在2到10 ^ 6之间,执行
- temp:= result的最后一个元素
- temp:=(temp * x)mod p
- 将temp插入到result的末尾
- 如果m > n,则
- temp:= n
- n:= m
- m:= temp
- prod:= 1
- 对于x在1到m之间,执行
- prod:=(prod * result [x-1])mod p
- prod:=(prod ^ 2)mod p
- 对于x在0到n-m之间,执行
- prod:=(prod * result [m-1])mod p
- 返回prod
示例
让我们看一下以下实现以获得更好的理解−
p = 10**9+7
def solve(n, m):
result = [1]
for x in range(2,10**6+1):
temp = result[-1]
temp = (temp*x) % p
result.append(temp)
if(m > n):
temp = n
n = m
m = temp
prod = 1
for x in range(1,m):
prod = (prod * result[x-1]) % p
prod = (prod**2) % p
for x in range(n-m+1):
prod = (prod*result[m-1]) % p
return prod
n = 3
m = 3
print(solve(n, m))
输入
3, 3
输出
24