博客
关于我
Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
阅读量:799 次
发布时间:2023-02-10

本文共 1086 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要计算 Mr.BG 在给定约束下形成的所有可能字符串中非回文字符串的数量。我们将使用数学方法来高效地解决这个问题。

方法思路

  • 问题分析:Mr.BG 有 M 种不同的字母,每种有 N 个。他从中选出 N 个小球,放到 N 个盒子里,每个盒子放一个小球。我们需要计算所有可能的字符串中,非回文字符串的数量。
  • 总排列数:每个盒子可以选择 M 个字母中的任意一个,因此总排列数为 ( M^N )。
  • 回文排列数:回文字符串的对称性要求每个对称位置对字符相同。计算回文排列数时,考虑长度为 N 的字符串的对称结构,分别计算偶数和奇数的情况。
  • 快速幂计算:为了高效计算大数的幂取模,使用快速幂算法。
  • 解决代码

    MOD = 10**9 + 7def main():    import sys    input = sys.stdin.read    data = input().split()    TC = int(data[0])    index = 1    for _ in range(TC):        N = int(data[index])        M = int(data[index+1])        index += 2        if N == 0 or M == 0:            print(0)            continue        total = pow(M, N, MOD)        if N % 2 == 0:            k = N // 2        else:            k = (N + 1) // 2        palindrome = pow(M, k, MOD)        res = (total - palindrome) % MOD        print(res)if __name__ == "__main__":    main()

    代码解释

  • 读取输入:使用 sys.stdin.read 读取所有输入数据,处理多个测试用例。
  • 处理每个测试用例:读取 N 和 M,处理特殊情况(如 N=0 或 M=0)。
  • 计算总排列数:使用 pow 函数计算 ( M^N \mod (10^9 + 7) )。
  • 计算回文排列数:根据 N 的奇偶性分别计算对称位置对的数量,使用快速幂计算回文排列数。
  • 计算结果:总排列数减去回文排列数,取模后输出结果。
  • 该方法通过数学分析和快速幂算法,高效地解决了问题,确保了计算的正确性和性能。

    转载地址:http://qqffk.baihongyu.com/

    你可能感兴趣的文章
    mysql事务理解
    查看>>
    MySQL事务详解结合MVCC机制的理解
    查看>>
    MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
    查看>>
    MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
    查看>>
    mysql五补充部分:SQL逻辑查询语句执行顺序
    查看>>
    mysql交互式连接&非交互式连接
    查看>>
    MySQL什么情况下会导致索引失效
    查看>>
    Mysql什么时候建索引
    查看>>
    MySql从入门到精通
    查看>>
    MYSQL从入门到精通(二)
    查看>>
    mysql以下日期函数正确的_mysql 日期函数
    查看>>
    mysql以服务方式运行
    查看>>
    mysql优化--索引原理
    查看>>
    MySQL优化配置详解
    查看>>
    mysql会员求积分_MySql-统计所有会员的最高前10次的积分和
    查看>>
    MySQL保姆级教程(SQL语法基础篇)从小白到高手的进阶指南,收藏这一篇就够了
    查看>>
    MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
    查看>>
    Mysql全局优化参数
    查看>>
    MySQL全文索引实现简单版搜索引擎
    查看>>
    MySQL全面瓦解:安装部署与准备
    查看>>