在 Python 中查找由 m 大小字母表中没有回文的字母组成的 n 长度字符串的程序
假设我们有m个字母和另一个值n。我们必须通过从这m个字母中提取字母创建长度为n的字符串的数量,并且字符串没有长度大于1的回文子字符串。如果答案太大,则将结果修改为10^9+7。
所以,如果输入像n=2m=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