P3811 【模板】乘法逆元

一个刚学数论的萌新,总结了一下这题的大部分做法

//一、费马小定理+快速幂  O(nlogn) 64分
#include<cstdio>
using namespace std;
typedef long long ll;
int a,b;
inline ll pow(ll x,ll p) {ll ans=1;x%=b;while(p) {if (p&1) ans=ans*x%b;x=x*x%b;p>>=1;}return ans%b;
}
inline void write(int x) {if(x>9) write(x/10);putchar(x%10^48);
}
int main() {scanf("%d%d",&a,&b);for (int i=1; i<=a; i++) {write(pow(i,b-2));putchar('\n');}
}
//二、exgcd O(nlogn)  80分#include<cstdio>
using namespace std;
typedef int ll;
ll x,y,a,b;
inline void exgcd(ll a,ll b) {if (!b) x=1,y=0;else {exgcd(b,a%b); int t=x; x=y,y=t-a/b*y;}
}
inline void write(int x){if(x>9) write(x/10);putchar(x%10^48);
}
int main() {scanf("%d%d",&a,&b);for (int i=1; i<=a; i++) {exgcd(i,b);write((x%b+b)%b);putchar('\n');}
}
//三、费马小定理+快速幂+线性筛 合数O(1),质数O(nlogn) 80分
#include <cstdio>
using namespace std;
typedef long long ll;
ll n,p,inv[3000010],vis[3000010];
ll pow(ll x,int b) {ll ans=1;for (int i=b; i; i>>=1,x=x*x%p)if (i&1) ans=ans*x%p;return ans%p;
}
void work() {inv[1]=vis[1]=1;for (int i=2; i<=n; i++)if (!vis[i]) {vis[i]=1;inv[i]=pow(i,p-2);for (int j=2; j<=i && j*i<=n; j++)vis[i*j]=1,inv[i*j]=(inv[i]*inv[j])%p;}
}
int main() {scanf("%lld%lld",&n,&p);work();for (int i=1; i<=n; i++) printf("%lld\n",inv[i]);return 0;
}
//四、阶乘+1次快速幂 O(n) 100分 607ms#include<cstdio>
#define ll long long
using namespace std;
int n,p;
ll c[3000005],ans[3000005];
ll ksm(ll x,ll y)
{ll an=1;while(y){if(y&1)an=(an*x)%p;x=(x*x)%p;y>>=1;}return an;
}
int main()
{scanf("%d%d",&n,&p);c[0]=1;for (int i=1;i<=n;i++) c[i]=(c[i-1]*i)%p;ll pow=ksm(c[n],p-2),k;for(int i=n;i;i--){k=(pow*i)%p;ans[i]=(pow*c[i-1])%p;pow=k;}for(int i=1;i<=n;i++)printf("%lld\n",ans[i]);
}
//五、线性递推 O(n) 100分 560ms
#include<cstdio>
#define ll long long
using namespace std;
ll inv[3000005]={0,1};
int main()
{int n,p;scanf("%d%d",&n,&p);printf("1\n");for (int i=2;i<=n;i++)printf("%d\n",inv[i]=(ll)p-(p/i)*inv[p%i]%p);return 0;
}

转载于:https://www.cnblogs.com/Randolph68706/p/11195841.html

题解 P3811 【【模板】乘法逆元】相关推荐

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

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

  2. 【训练题22:线性求逆元】【模板】乘法逆元 | 洛谷 P3811

    [模板]乘法逆元 难度 普及/提高\color{yellow}普及/提高普及/提高 板子题,给出两种方法 题意 给 n,pn,pn,p 求出所有 i∈[1,n]i\in[1,n]i∈[1,n]在模 p ...

  3. P5431 【模板】乘法逆元2(小学数学题,毒瘤鱼,卡常之王yyds)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P5431 [模板]乘法逆元2 题目传送门 题目大意: 给定 nnn 个正整数 aia_iai​ ,求 ...

  4. luogu P2613 【模板】有理数取余(费马小定理,乘法逆元)

    整理的算法模板合集: ACM模板 目录 题目传送门 题目传送门 相当于是一个高精的费马小定理求乘法逆元.虽然数据达到了101000110^{10001}1010001,但是我们可以使用快读然后一直模m ...

  5. 【luogu 3811】【模板】乘法逆元

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

  6. 乘法逆元(洛谷-P3811)

    题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 1≤n≤3×10^6 ,n<p<20000528,输入保证 p 为质数. 输出格式: ...

  7. gcd + 扩展欧几里得定理+递推乘法逆元(模板)

    gcd: int gcd(int a, int b){ return b==0? a: gcd(b, a%b); } 扩张欧几里得定理: 扩展欧几里德算法是用来在已知a, b求解一组x,y使得ax+b ...

  8. java乘法逆元与除法取模,逆元

    题目描述 题目描述 求关于x的同余方程ax≡1(mod b)的最小正整数解. 输入格式 每组输入数据只有一行,包含两个正整数a, b,用一个空格隔开. 数据规模: 对于40%的数据,2≤b≤1,000 ...

  9. 数论练习1 ( 曹冲养猪 + [POJ 2891]Strange Way to Express Integers + 乘法逆元【带证明】)

    虽然作业还没有做完,但是我还是放不下它,对此,我只想说: 今天你对作业爱理不理,明天它就让你补到飞起 DP先放放,我们要雨露均沾 练习上手:乘法逆元 题目 题解 代码实现 曹冲养猪?(互质的中国剩余定 ...

最新文章

  1. day7 python学习随笔
  2. 网络爬虫框架cetty的实现
  3. linux cp 命令使用一角
  4. IOCP不可忽视的细节
  5. React Native 常见问题集合
  6. Peacock:大规模主题模型及其在腾讯业务中的应用-2015
  7. 数据库两个表有一个字段互相关联,根据这个关联字段更新一张表
  8. 典型排序算法(C语言实现)
  9. 连接远程hbase长时间等待问题
  10. 浅谈JavaScript--闭包
  11. nginx 正向代理_看这篇彻底认识Nginx!
  12. python之常用快捷键
  13. oracle 统计同比 环比,。oracle 同期 同比 环比
  14. win10自带输入法突然变成了繁体
  15. 多台服务器集群部署方案
  16. 为什么看P1dB压缩,而不是2dB,3dB压缩
  17. Android UI 字体库(.ttf文件)的使用 -- xml方式
  18. ui设计教程分享:关于Logo设计要素
  19. 配置失败还原请勿关闭计算机,win7系统遇到更新失败提示“配置windwos update 失败还原更改,请勿关闭计算机”的解决方法...
  20. 9、共享变量(Broadcast Variable和Accumulator)

热门文章

  1. odoo self.ensure_one()
  2. 雷林鹏分享:C# 运算符
  3. app store 关键词
  4. Qt 程序打包发布总结
  5. Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)
  6. 动画原理——绘制正弦函数环绕运动椭圆运动
  7. 单例模式(饿汉式和懒汉式)
  8. python中对象的概念是什么_简述Python中的面向对象编程的概念
  9. 企业是否应该实现对客户需求的快速响应_如何做好企业服务?
  10. php7有没有使用jit,RegEx不适用于长模式PCRE的JIT编译器堆栈限制 – PHP7