在 Python 中查找由 m 大小字母表中没有回文的字母组成的 n 长度字符串的程序

假设我们有 m 个字母和另一个值 n。我们必须通过从这 m 个字母中提取字母创建长度为 n 的字符串的数量,并且字符串没有长度大于 1 的回文子字符串。如果答案太大,则将结果修改为 10^9+7。

所以,如果输入像 n = 2 m = 3,那么输出将是 6,因为 m = 3,所以如果字母是 {x,y,z},我们可以生成这样的字符串:[xx,xy,xz ,yx,yy,yz,zx,zy,zz] 但 [xx,yy,zz] 无效,所以有 6 个字符串。

示例

让我们看看以下实现以获得更好的理解 -

def solve(n, m):
   p = 10**9+7
   if n == 1:
      return m % p
   if n == 2:
      return m * (m - 1) % p
   if m <= 2:
      return 0
   return m * (m - 1) * pow(m - 2, n - 2, p) % p

n = 2
m = 3
print(solve(n, m))

输入

3, [1,2,3,4,1]
输出结果
6

猜你喜欢