逆元相关
来源:互联网 发布:旅游数据分析报告 编辑:程序博客网 时间:2024/05/29 14:27
取模:
(a+b)%p = (a%p + b%p)%p
(a-b)%p = (a%p - b%p + p)%p
(a*b)%p = (a%p*b%p)%p
(a/b) %p = ?
逆元
逆元–>倒数(相乘=1)
1、
顺便在p为质数的时候,直接求a^(p-2)就ok
2、扩欧,先来说一下扩展欧几里得算法:
求解形如ax+by=gcd(a,b)的一组解
求法:
求逆元:
3、线性求逆元
这里板子题
欧拉定理:(记得longlong)
#include <cstdio>#define LL long longusing namespace std;LL a,b;LL phi(LL n){ int ans=1; for (int i=2;i*i<=n;i++) if (n%i==0) { ans*=i-1; n/=i; while(n%i==0) ans*=i,n/=i; } if (n>1) ans*=n-1; return ans;}LL ksm(LL a,LL k){ LL ans=1;a%=b; for (;k;k>>=1,a=a*a%b) if (k&1) ans=ans%b*a%b; return ans%b;}int main(){ scanf("%lld%lld",&a,&b); LL hh=phi(b)-1; printf("%lld",ksm(a,hh));}
扩欧:
#include <cstdio> using namespace std;void exgcd(int a,int b,int &x,int &y){ if (b==0) { x=1; y=0; return; } exgcd(b,a%b,y,x); y-=a/b*x;}int main(){ int x,y,a,b; scanf("%d%d",&a,&b); exgcd(a,b,x,y); printf("%d",(x+b)%b);}
线性求逆元Emmm….因为是线性的,所以对于这道板子来说数组并不能开下。
int inv[N];void INV(int n,int p){ inv[0]=0; inv[1]=1; for (int i=2;i<=n;i++) inv[i]=(p-(p/i))*inv[p%i]%p;}
阅读全文
1 0
- 逆元相关
- 逆元相关
- 逆元相关知识 kevin_xcw
- 元数据相关知识
- 友元相关
- 关于数论乘法逆元及相关知识点
- 元数据管理等相关问题
- hive相关的元数据表
- Lua表相关元方法
- 普元SOA相关概念
- hive元数据相关信息
- 逆元
- 逆元
- 逆元
- 逆元
- 逆元
- 逆元
- 逆元
- JAVA基础:“==”和“equals”的区别
- Perlin noise(三)
- jQuery click事件多次触发
- Hdu 6129 Just do it【杨辉三角、规律】
- 跳跃表
- 逆元相关
- 快乐学习(3)
- 过河卒(NOIP2002)
- HDU-2188-悼念512汶川大地震遇难同胞——选拔志愿者 【巴什博弈】
- 二维最小乘积生成树
- 定时打印
- JAVA输入一串数字,转换成汉字显示
- mysql索引总结----mysql 索引类型以及创建
- 2017 Multi-University Training Contest