
AcWing 876 快速幂求逆元
首先检查 a_i 是否为 0。如果是 0,逆元不存在。 检查 a_i 是否能被 p_i 整除。如果能,逆元不存在。 否则,计算 a_i^(p_i - 2) mod p_i,得到逆元。 读取输入,获取每个数对 (a_i, p_i)。 对于每个数对:a. 检查 a_i 是否为 0,如果是,输出 impossible。b. 检查 a_i 是否被 p_i 整除,如果是,输出 impossible。c. 否则,使用快速幂算法计算 a_i^(p_i - 2) mod p_i。 输出结果或 impossible。
发布日期:2021-05-28 16:27:03
浏览次数:29
分类:精选文章
本文共 906 字,大约阅读时间需要 3 分钟。
对于每个给定的数对 (a_i, p_i),我们需要确定 a_i 是否有模 p_i 的乘法逆元。乘法逆元存在的条件是 a_i 和 p_i 必须互质。由于 p_i 是质数,所以 a_i 和 p_i 互质的充要条件是 a_i 不被 p_i 整除。
如果 a_i 和 p_i 互质,那么according to Fermat's Little Theorem,a_i 的乘法逆元可以通过计算 a_i 的 (p_i - 2) 次幂 mod p_i 得到。具体来说,可以使用快速幂算法来高效计算这个过程。
由于 p_i 的大小可能很大,建议使用带模运算的快速幂算法来避免数值溢出。例如,假设要求计算 a_i^e mod p_i,其中 e = p_i - 2,因此:
快速幂算法的实现可以与以下伪代码相当:
function fast_power(a, exponent, mod): result = 1 a = a mod mod while exponent > 0: if exponent % 2 == 1: result = (result * a) % mod a = (a * a) % mod exponent = exponent // 2 return result
对于每个数对 (a_i, p_i),调用上述函数来计算逆元。具体实现中,还需确保对于输入的 a_i 和 p_i 适用上述条件。
分步说明如下:
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年05月04日 20时41分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux操作系统的安装与使用
2019-03-12
C++ 继承 详解
2019-03-12
OSPF多区域
2019-03-12
Docker入门之-镜像(二)
2019-03-12
数据结构——链表(3)
2019-03-12
socket模块和粘包现象
2019-03-12
去了解拉绳位移编码器的影响因素
2019-03-12
无法初始化Winsock2.2处理
2019-03-12
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
2019-03-12
重置UAG Application admin密码
2019-03-12
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
项目计划甘特图绘制说明
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
ionic4 路由跳转传值
2019-03-12
pwn题shellcode收集
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
配置jdk的环境变量
2019-03-12