传送

乘法逆元:ax ≡ 1 (mod p),其中x为a的逆元,求模意义下的乘法逆元,通常有一下几种方法:

1.拓展欧几里得(也就是exgcd)

ax ≡ 1 (mod p)

ax-py=1

这就变成解不定方程的问题了,根据拓展欧几里得算法,代码如下(会TLE3个点)(就算开o2优化也没有卵用)

#include<iostream>
#include<cstdio>
using namespace std;
long long n,p;
void exgcd(long long a,long long b,long long &d,long long &x,long long&y)//其中d为a,b的最大公约数
{if(b==){x=;y=;d=a;//当然,exgcd 也可以写成water lift 大佬的有返回值的
}
else{
exgcd(b,a%b,d,y,x);
y-=a/b*x;
}
}
int main()
{
cin>>n>>p;
for(long long i=;i<=n;i++)
{ long long x,y,d;
exgcd(i,p,d,x,y);
cout<<((x/d)%(p/d)+(p/d))%(p/d)<<endl;//防止x为负数
}
}

2.费马小定理(因为数据保证p为质数)

所以即为a的逆元。

n个月过后来补个锅(这玩意用快速幂做)

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a,p;
int ksm(int a,int b,int p)
{int r=;
while(b)
{if(b&)r=r*a%p;
a=a*a%p;
b/=;
}
return r;
}
int main()
{
scanf("%d%d",&a,&p);
cout<<ksm(a,p-,p);
}

不过依旧会TLE

3.说了这么多,终于说到不TLE的解法了

那就是线性递推

这样,就得到了a在模p意义下的逆元

递推式 

为了让结果不是负数,递推式就变为 

代码如下

#include<iostream>
#include<cstdio>
using namespace std;
long long n,p,f[];
int main()
{
scanf("%lld %lld",&n,&p);//要用scanf和printf,不然会超时
f[]=;f[]=;
printf("%lld \n",f[]);
for(long long i=;i<=n;i++)
{ f[i]=(long long)((p-p/i)*f[p%i])%p;
printf("%lld \n",f[i]);
} }

P3811 乘法逆元的更多相关文章

  1. 洛谷P3811乘法逆元

    传送门 线性递推 #include <iostream> #include <cstdio> #include <cstring> #include <alg ...

  2. P3811 【模板】乘法逆元

    P3811 [模板]乘法逆元 线性递推逆元模板 #include<iostream> #include<cstdio> #include<cstring> #def ...

  3. [洛谷P3811]【模板】乘法逆元

    P3811 [模板]乘法逆元 题意 求1-n所有整数在模p意义下的逆元. 分析 逆元 如果x满足\(ax=1(\%p)\)(其中a p是给定的数)那么称\(x\)是在\(%p\)意义下\(a\)的逆元 ...

  4. 模板【洛谷P3811】 【模板】乘法逆元

    P3811 [模板]乘法逆元 给定n,p求1~n中所有整数在模p意义下的乘法逆元. T两个点的费马小定理求法: code: #include <iostream> #include < ...

  5. 洛谷 P3811 【模板】乘法逆元

    P3811 [模板]乘法逆元 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 输出格式: n行,第i行表示i在模p意义下 ...

  6. 洛谷——P3811 【模板】乘法逆元

    P3811 [模板]乘法逆元 线性求逆元 逆元定义:若$a*x\equiv1 (\bmod {b})$,且$a$与$b$互质,那么我们就能定义: $x$为$a$的逆元,记为$a^{-1}$,所以我们也 ...

  7. 题解 P3811 【【模板】乘法逆元】

    P3811 [模板]乘法逆元 一个刚学数论的萌新,总结了一下这题的大部分做法 //一.费马小定理+快速幂 O(nlogn) 64分 #include<cstdio> using names ...

  8. 逆元-P3811 【模板】乘法逆元-洛谷luogu

    https://www.cnblogs.com/zjp-shadow/p/7773566.html -------------------------------------------------- ...

  9. 【洛谷P3811】[模板]乘法逆元

    乘法逆元 题目链接 求逆元的三种方式: 1.扩欧 i*x≡1 (mod p) 可以化为:x*i+y*p=1 exgcd求x即可 inline void exgcd(int a,int b,int &a ...

随机推荐

  1. 牛客国庆集训派对Day1-C:Utawarerumono(数学)

    链接:https://www.nowcoder.com/acm/contest/201/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  2. HDU2036:改革春风吹满地

    Problem Description " 改革春风吹满地, 不会AC没关系; 实在不行回老家, 还有一亩三分地. 谢谢!(乐队奏乐)" 话说部分学生心态极好,每天就知道游戏,这次 ...

  3. vip视频解析接口

    浏览器的地址栏输入http://www.meilii.cn/index.php?url=(然后找到一个属于vip的视频你就复制网站粘贴进来就可以了!)速度还挺快的!

  4. go build Multiple main.go file

    golang 如何编译同目录下多个main文件? 多个go 文件在相同目录编译时候会报错, 可将文件放在不同的package下,结构如下: buidtest/├── a│   └── a.go└── ...

  5. centos7配置lamp成功安装过

    linux+apache+mysql/mariadb+php 首先apache的安装: yum install httpd 接着mysql/mariadb的安装: yum install mysql ...

  6. 诡异的磁盘空间100%报警分析得出df -h与du -sh的根本性差别

    前言:早晨磁盘报警刚清空完tomcat和nginx日志,使用的命令是类似echo "" > show_web-error.log或者> show_web-debug.l ...

  7. Python 学习书籍推荐

    谁会成为AI 和大数据时代的第一开发语言? 这本已是一个不需要争论的问题.如果说三年前,Matlab.Scala.R.Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明 ...

  8. MEMS 硅麦资料收集

    MEMS 硅麦资料收集 PCM 和 I2S 协议的 MEMS Microphone PCM 协议在蓝牙方面比较多,一般都有 PCM 的接口. MEMS Microphone 更加的省电,更方便用于语音 ...

  9. show master status, show slave status中的Executed_Gtid_Set

    slave 如果server是slave节点,在server上执行show master staus与show slave status显示的Executed_Gtid_Set是一样的. slave也 ...

  10. Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)成功烧录方法

    问题: Arduino:1.6.3 (Windows 7), 板:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)" Sketch ...