在Python中编写计算可能谦虚矩阵的程序

在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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程