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;
}

题解 P3811 【【模板】乘法逆元】的更多相关文章

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

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

  2. 【ZOJ 3609】Modular Inverse 最小乘法逆元

    The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x  ...

  3. P3811 【模板】乘法逆元

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

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

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

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

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

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

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

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

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

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

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

  9. luogu P3811 【模板】乘法逆元

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

随机推荐

  1. 关于XML异步

    记得有次面试的时候面试官问我知道AJAX吗?当时我回答听过但是没去看过,当时只是知道它和异步的概念有关. 经过查资料,弄明白了些头绪,下面就把我自己对AJAX的理解说说. 大多数浏览器是支持XMLHt ...

  2. RIO的性能

    看了一下微软官网RIO没有达到四五倍的宣称(而且必须在windows 2012r2才可以)最多一倍github.com/aspnet/benchmarks测试代码可以从github.com/zelia ...

  3. 静态编译 Qt 5.6

    源码下载 Qt git地址:git://code.qt.io/qt/qt5.git 推荐用 SourceTree 客户端来克隆源码 准备工作 系统 Windows 7 或者 Windows 10 编译 ...

  4. UILabel实现自适应宽高需要注意的地方(三)

        一.需求图如下所示    UILabel 的高度自适应 UILabel中的段落间距可设置   图片效果如下:   调整段落适应长宽高方式:         需求:   保证"游戏玩法 ...

  5. XP系統IIS最大連接數修改

    方法一: 安裝軟件 http://download.microsoft.com/download/iis50/Utility/5.0/NT45/EN-US/MtaEdt22.exe 然後進入  W3S ...

  6. ngnix 安装

    1安装PCRE库 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包: ...

  7. spring boot单元测试之RestTemplate(二)

    上篇博客中,简单介绍了RestTemplate,只是用到了单元测试环节,如果在正式开发环境使用RestTemplate调用远程接口,还有一些配置要做. 一.配置类 由于Spring boot没有对Re ...

  8. java统计文本中单词出现的个数

    package com.java_Test; import java.io.File; import java.util.HashMap; import java.util.Iterator; imp ...

  9. Java开发桌面程序学习(十)——css样式表使用以及Button悬浮改变样式实现

    css样式表使用 javafx中的css样式,与html的有些不一样,javafx中的css,是以-fx-background-color这种样子的,具体可以参考文档JavaFx css官方文档 ja ...

  10. mongodb批量更新操作文档的数组键

    persons文档的数据如下: > db.persons.find(){ "_id" : 2, "name" : 2 }{ "_id" ...