博客
关于我
Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
阅读量:791 次
发布时间: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 docker远程备份数据库_docker环境下数据库的备份(postgresql, mysql) 实例代码
    查看>>
    MVC 301重定向(永久重定向不带www域名到带www的域名)
    查看>>
    Mysql Dump命令
    查看>>
    Mvc Action可以通过jsonp方式调取
    查看>>
    mysql ERROR 1396 (HY000): Operation CREATE USER failed 解决办法
    查看>>
    MVC aspx
    查看>>
    MySQL Error Handling in Stored Procedures---转载
    查看>>
    MVC HtmlHelper用法大全
    查看>>
    mysql er进制包安装_MySQL二进制包安装简略过程
    查看>>
    MVC jsp+servlet+javabean 连接Mysql数据库測试demo
    查看>>
    mysql explain关键字执行计划表解析系列一
    查看>>
    Mvc Session 设置以后再构造函数中取值时为null问题
    查看>>
    mysql explain字段含义
    查看>>
    MVC 区域功能
    查看>>
    mysql explain执行计划详解
    查看>>
    MySQL Explain详解
    查看>>
    mvc 添加控制器时运行所选代码生成器出错,未能加载文件或者程序集或他的一个依赖项
    查看>>
    MySQL FEDERATED 提示
    查看>>
    MVC 视图-模型,动态更新
    查看>>
    mysql float 转int
    查看>>