AcWing 878 线性同余方程
发布日期:2021-05-28 16:27:05 浏览次数:29 分类:精选文章

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

给定n组数据ai,bi,mi,对于每组数求出一个xi,使得ai乘以xi在模mi下等于bi。如果没有解,就输出impossible。

这个问题属于线性同余方程求解问题。具体来说,对于每一组数据,我们需要解方程:$a_i x_i ≡ b_i (mod m_i)$。这个方程有解的条件是$gcd(a_i, m_i)$能整除$b_i$。如果不满足这个条件,则无解。

当解存在时,我们可以通过扩展欧几里得算法找到$x$和$y$,使得$gcd(a_i, m_i) = a_i x + m_i y$。然后通过调整系数可以得到方程的解$x_i$。

具体步骤如下:

  • 对于每组数据,计算$a_i$和$m_i$的最大公约数$d$。
  • 判断$d$是否整除$b_i$:
    • 如果不整除,输出impossible。
    • 如果整除,继续求解。
  • 使用扩展欧几里得算法找到$x$和$y$,使得$a_i x + m_i y = d$。
  • 将系数$x$调整为$x \times (b_i / d)$,然后对$m_i$取模,得到$x_i$。
  • 输出每个$x_i$,如果无解则输出impossible。
  • 通过这样的方法,我们可以高效地求解每组对应的$x_i$。

    上一篇:AcWing 204 表达整数的奇怪方式
    下一篇:.NET Core 中基于 IHostedService 实现后台定时任务

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年04月18日 07时45分51秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章