博客
关于我
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在Linux运行时新增配置文件提示:World-wrirable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored 权限过高导致
    查看>>
    Mysql在Windows上离线安装与配置
    查看>>
    MySQL在渗透测试中的应用
    查看>>
    Mysql在离线安装时启动失败:mysql服务无法启动,服务没有报告任何错误
    查看>>
    Mysql在离线安装时提示:error: Found option without preceding group in config file
    查看>>
    MySQL基于SSL的主从复制
    查看>>
    Mysql基本操作
    查看>>
    mysql基本操作
    查看>>
    mysql基础
    查看>>
    mysql基础---mysql查询机制
    查看>>
    MySQL基础5
    查看>>
    MySQL基础day07_mysql集群实例-MySQL 5.6
    查看>>
    Mysql基础命令 —— 数据库、数据表操作
    查看>>
    Mysql基础命令 —— 系统操作命令
    查看>>
    MySQL基础学习总结
    查看>>
    mysql基础教程三 —常见函数
    查看>>
    mysql基础教程二
    查看>>
    mysql基础教程四 --连接查询
    查看>>
    MySQL基础知识:创建MySQL数据库和表
    查看>>
    MySQL基础系列—SQL分类之一
    查看>>