博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【luogu 3811】【模板】乘法逆元
阅读量:5993 次
发布时间:2019-06-20

本文共 1560 字,大约阅读时间需要 5 分钟。

题目背景

这是一道模板题

题目描述

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

输入输出格式

输入格式:

一行n,p

输出格式:

n行,第i行表示i在模p意义下的逆元。

输入输出样例

输入样例#1:
10 13
输出样例#1:
179108112534

说明

1n3×106​​,n<p<20000528

输入保证 pp 为质数。

费马小定理:

1 #include
2 #include
3 #include
4 #include
5 #define ll long long 6 using namespace std; 7 int n,p; 8 int fast(ll a,ll b){ 9 ll ans=1;10 while(b){11 if(b&1)ans=(ans*a)%p;12 a=(a*a)%p;13 b>>=1;14 }15 return ans;16 }17 int main(){18 scanf("%d%d",&n,&p);19 for(int i=1;i<=n;i++)20 printf("%d\n",fast(i,p-2));21 return 0;22 }

扩展欧几里得:

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 void ex_gcd(int a,int b,int &x,int &y){ 7 if(b==0){x=1,y=0;return;} 8 ex_gcd(b,a%b,x,y); 9 int tmp=x;x=y;y=tmp-(a/b)*y;10 }11 int main(){12 int a,b,x,y;13 scanf("%d%d",&a,&b);14 for(int i=1;i<=a;i++){15 ex_gcd(i,b,x,y);16 printf("%d\n",(x+b)%b);17 }18 return 0;19 }

线性计算:

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int ans[3000010],n,p; 7 int main(){ 8 scanf("%d%d",&n,&p); 9 ans[1]=1;puts("1");10 for(int i=2;i<=n;i++){11 ans[i]=(long long)(p-p/i)*ans[p%i]%p;12 printf("%d\n",ans[i]);13 }14 return 0;15 }

转载于:https://www.cnblogs.com/Emine/p/7646786.html

你可能感兴趣的文章
java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
查看>>
CentOS下Tmux安装和使用
查看>>
队列的存储结构和常见操作(c 语言实现)
查看>>
GitHub上整理的一些工具
查看>>
名校公开课网站汇总
查看>>
【AdaBoost算法】弱分类器训练过程
查看>>
WebService原理
查看>>
Leaf——美团点评分布式ID生成系统
查看>>
atitit..sql update语法的词法分析,与语法ast构建
查看>>
enjoy dollar vs cash dollar
查看>>
What is the largest TCP/IP network port number allowable for IPv4
查看>>
MongoVUE 如何导出数据
查看>>
AngularJS快速入门指南02:介绍
查看>>
从零开始学Xamarin.Forms(二) 环境搭建、创建项目
查看>>
js 动态 activex 组件
查看>>
--@angularJS--路由、模块、依赖注入
查看>>
(十一) 一起学 Unix 环境高级编程 (APUE) 之 高级 IO
查看>>
用c#开发微信(3)基于Senparc.Weixin框架的接收普通消息处理 (源码下载)
查看>>
ODAC (V9.5.15) 学习笔记(二十一)数据复制
查看>>
Cocos2d-x场景功能描述的生命周期
查看>>