洛谷 P3811 [模板] 模意义下的乘法逆元

【模板】模意义下的乘法逆元

题目描述

给定 n , p n,p n,p 1 ∼ n 1\sim n 1n 中所有整数在模 p p p 意义下的乘法逆元。

这里 a a a p p p 的乘法逆元定义为 a x ≡ 1 ( m o d p ) ax\equiv1\pmod p ax1(modp) 的解。

输入格式

一行两个正整数 n , p n,p n,p

输出格式

输出 n n n 行,第 i i i 行表示 i i i 在模 p p p 下的乘法逆元。

样例 #1

样例输入 #1

10 13

样例输出 #1

1
7
9
10
8
11
2
5
3
4

提示

1 ≤ n ≤ 3 × 1 0 6 1 \leq n \leq 3 \times 10 ^ 6 1n3×106 n < p < 20000528 n < p < 20000528 n<p<20000528

输入保证 p p p 为质数。

思路

递推式的起点: 1 − 1 ≡ 1 ( m o d p ) 1^{-1}\equiv 1 \pmod{p} 111(modp) i = 1 i=1 i=1时)。
对于 i ≥ 2 i\geq2 i2,设 p = k ∗ i + t p=k*i+t p=ki+t,则 k ∗ i + t ≡ 0 ( m o d p ) k*i+t\equiv 0 \pmod{p} ki+t0(modp)
然后同时乘上 i − 1 , t − 1 i^{-1},t^{-1} i1,t1,则可以得到 k ∗ t − 1 + i − 1 ≡ 0 ( m o d p ) k*t^{-1}+i^{-1}\equiv 0 \pmod{p} kt1+i10(modp)
移项可得 i − 1 ≡ − k ∗ t − 1 ( m o d p ) i^{-1}\equiv -k*t^{-1} \pmod{p} i1kt1(modp)
由于 k = ⌊ p i ⌋ k=\lfloor\frac{p}i\rfloor k=ip t = p % i t=p\%i t=p%i
所以 i − 1 ≡ − ⌊ p i ⌋ ∗ ( p % i ) − 1 ( m o d p ) i^{-1}\equiv -\lfloor\frac{p}i\rfloor*(p\%i)^{-1} \pmod{p} i1ip(p%i)1(modp)
i − 1 ≡ p − ⌊ p i ⌋ ∗ ( p % i ) − 1 ( m o d p ) i^{-1}\equiv p-\lfloor\frac{p}i\rfloor*(p\%i)^{-1} \pmod{p} i1pip(p%i)1(modp)

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 3e6 + 6;
ll inv[maxn];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll n, p;cin >> n >> p;inv[1] = 1; // 初始化inv[1]cout << inv[1] << '\n';for (ll i = 2; i <= n; i++){inv[i] = p - p / i * inv[p % i] % p; // 递推求乘法逆元cout << inv[i] << '\n';}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt——Qt网络编程之获取本机网络信息(通过QHostInfo和QNetworkInterface 类获取本地网络所有接口信息)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》

asp.net core mvc 路由

在ASP.NET Core MVC中&#xff0c;路由是一项核心功能&#xff0c;它负责将进来的HTTP请求映射到相应的控制器和动作方法上。ASP.NET Core支持两种路由方式&#xff1a;传统的基于模板的路由&#xff08;约定路由&#xff09;和属性路由。 1. 基于约定的路由 在Startup.Confi…

【001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂】

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂 文章目录 001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂创作背景通信模型ISO/OSI七层模型 和 TCP/IP四层模型网络通信数据包格式&#xff08;Ethernet II&…

【opencv GPU】测测你的opencv-GPU 版本每秒处理帧数 大概多少?

在使用OpenCV的cv2.dnn.Net类从ONNX模型文件创建网络时&#xff0c;如果你想要启用GPU加速&#xff0c;你需要确保OpenCV在安装时已经包含了GPU支持。这通常意味着你需要从源代码编译OpenCV&#xff0c;并确保在编译过程中启用了CUDA支持。 以下是如何在OpenCV中启用GPU加速的…

20240421阿夏的CSDN创作纪念日(3周年)

缘 提示&#xff1a;可以和大家分享最初成为创作者的初心 3年前我写下第一篇CSDN&#xff0c;开启了Python研究之旅win10系统64位&#xff08; 惠普&#xff09;台式电脑自动开机、关机图文详细解&#xff08;一&#xff09;_惠普主板设置自动开机-CSDN博客文章浏览阅读4.2k次…

对观察者模式的理解

目录 一、场景1、题目描述 【[案例来源](https://kamacoder.com/problempage.php?pid1075)】2、输入描述3、输出描述4、输入示例5、输出示例 二、实现三、更复杂的场景 【[案例来源](https://refactoringguru.cn/design-patterns/observer/java/example#example-0--listeners-…

深入OceanBase内部机制:资源隔离实现的方式总结

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 1. 为何HTAP需要资源隔离2. OceanBase的资源隔离机制概述租户间资源隔离租户内资源隔离物理资源隔离大查询请求的隔离优先级…

26.ELF文件解析

ELF文件及objdump/readelf命令 文章目录 ELF文件及objdump/readelf命令ELF文件结构分析使用od命令读取ELF文件使用readelf命令读取ELF文件使用objdump命令分析ELF文件reference 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; ELF(Executa…

4月21敲一篇猜数字游戏,封装函数,void,无限循环,快去体验体验

今天敲一篇猜数字游戏 目录 今天敲一篇猜数字游戏 1.打开先学goto语句&#xff1a; 2.开干&#xff1a; 首次我们学习随机数&#xff1a; 讲解一下&#xff1a; 改用srand; 加入时间变量&#xff1a; 获取时间&#xff1a;哈​编辑 3.我本来想已近够完美了&#xff0…

Flink学习(七)-单词统计

前言 Flink是流批一体的框架。因此既可以处理以流的方式处理&#xff0c;也可以按批次处理。 一、代码基础格式 //1st 设置执行环境 xxxEnvironment env xxxEnvironment.getEnvironment;//2nd 设置流 DataSource xxxDSenv.xxxx();//3rd 设置转换 Xxx transformation xxxDS.…

Spring Boot中接收各种各样的参数

一、接收json参数&#xff0c;封装为Map 1.1、核心代码 /*** 接收json参数&#xff0c;封装为Map* param servletRequest* return* throws Exception*/ PostMapping("/getParam") public R getParam(HttpServletRequest servletRequest) throws Exception {Map<…

Bootstrap 5 保姆级教程(十二):弹出框 消息弹窗

一、弹出框 1.1 创建弹出框 通过向元素添加 data-bs-toggle"popover" 来来创建弹出框。 title 属性的内容为弹出框的标题&#xff0c;data-bs-content 属性显示了弹出框的文本内容&#xff1a; 注意: 弹出框要写在 JavaScript 的初始化代码里。 以下实例可以在文…

NLP 文本表征方式

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;将文本转换成计算机能够理解和处理的格式是一个基本的步骤。这个过程通常被称为文本表征或文本向量化。下面&#xff0c;我将详细介绍几种常见的文本表征方法&#xff0c;并提供一些例子来说明这些技术是如何应用的。…

投入产出表的分析要点有哪些

投入产出分析是利用投入产出表、投入产出系数和投入产出模型&#xff0c;对国民经济各部门之间的技术经济联系和影响进行分析的一种经济数据分析方法。 一、什么是投入产出表 我国的投入产出表是描述国民经济中各种产品的来源与使用去向的棋盘式平衡表 , 是产品部门 产品部门…

【已解决】电脑设置notepad++默认打开txt

1、以管理员的方式打开notepad 步骤&#xff1a;打开设置 -> 首选项 -> 文件关联 2、 设置Notepad默认打开 按照以下步骤将Notepad设置为默认打开.txt文件&#xff1a; 右键单击任何一个.txt文件。选择“属性”。在“常规”选项卡中&#xff0c;找到“打开方式”&#…

【Interconnection Networks 互连网络】Dragonfly Topology 蜻蜓网络拓扑

蜻蜓拓扑 Dragonfly Topology 1. 拓扑参数2. Topology Description 拓扑描述3. Topology Variations 拓扑变体 蜻蜓拓扑 Dragonfly Topology 1. 拓扑参数 Dragonfly拓扑参数&#xff1a; N N N: 网络中终端(terminal)的总数量 p p p: 连接到每个路由器的终端数量 a a a: 每…

VR全景:为户外游玩体验插上科技翅膀

随着VR全景技术的愈发成熟&#xff0c;无数人感到惊艳&#xff0c;也让各行各业看到了一片光明的发展前景。尤其是越来越多的文旅景区开始引入VR全景技术&#xff0c;相较于以往的静态风景图&#xff0c;显然现在的VR全景结合了动态图像和声音更加吸引人。 VR全景技术正在逐步改…

密码学 | 承诺:Pedersen 承诺 + ZKP

​ &#x1f951;原文&#xff1a;Toward Achieving Anonymous NFT Trading &#x1f951;写在前面&#xff1a;看了篇 22 年 SCI 3 区论文&#xff0c;里面提到在 Pedersen 承诺的揭示阶段可以使用零知识证明&#xff0c;而不必揭示消息明文和随机数。姑且记录一下这个方法。…

Dijkstra算法求最短路

Dijkstra算法可以在图中寻找一个节点&#xff08;称为“源节点”&#xff09;到所有其它节点的最短路径。 文章目录 前言 一、Dijkstra算法是什么&#xff1f; 二、问题介绍 三、朴素版Dijkstra算法 1.图的存储 2.算法实现 四、使用步骤 1.代码如下&#xff08;示例&#xff09…

使用 hiredis 客户端库封装一个简单的 Redis 类

目录 思考一下redis编程的整个过程。 我们作为redis客户端。需要跟redis服务器交互。 封装 Redis 的 C 类的过程可以分为以下几个步骤&#xff1a; 一个完成发布订阅功能的 Redis 类 思考一下redis编程的整个过程。 我们作为redis客户端。需要跟redis服务器交互。 那说白了…