首页 > 其他分享 >exgcd+乘法逆元相关笔记

exgcd+乘法逆元相关笔记

时间:2024-01-26 12:12:48浏览次数:28  
标签:return cout int exgcd 逆元 a% 乘法

#include <iostream>
#include <cstdio>
using namespace std;
const int pass=0;

//exgcd:

//求解二元一次不定方程
//ax+by=(a,b)=(b,a%b)=bx'+(a%b)*y'=bx'+(a-b*(a/b))*y'=b*(x'-(a/b)*y')+ay'
//则有 y=(x'-(a/b)*y'),x=y'

//不断嵌套
//不断递归,直到b=0;有解x=1,y=0

//求逆元:逆元符号:#
//ax#1(mod b)
//x为逆元
//ax+kb=1
//然后用exgcd求

int n,x,y,temp;

int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;y=0;
return a;
}
int t=exgcd(b,a%b,x,y);
int tx=x,ty=y;
x=ty;y=(tx-(a/b)*ty);
return t;
}
int gcd(int a,int b){
if(a%b==0) return b;
return gcd(b,a%b);
}

int main(){
//求a/b%p
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int d=exgcd(a,c,x,y);
cout<<x<<endl;
x=x*(1/d);
cout<<x<<endl<<d<<endl;;
cout<<b*x%c<<endl;
}

标签:return,cout,int,exgcd,逆元,a%,乘法
From: https://www.cnblogs.com/AIRDREAM/p/17989043

相关文章

  • (坚持每天写算法)算法复习和学习part1基础算法part1-9高精度乘法
    这一道题的思路和之前都是一样的,仍然是按照算式进行模拟的,这里就直接贴代码了:#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<algorithm>usingnamespacestd;//总结:vector,size,string,size,vector[i],string[i];vector&......
  • (坚持每天都写算法)算法复习与学习part1基础算法1.8高精度乘法
    这道知识点有点特殊,我当初在学的时候是只学了高精度*高精度,然后其他的我还没有想法,今天就来学学。有大概6天没有写新博客,主要是实习面试和期末考,实习面试没有过关,姐姐朋友推荐我先去刷一下面试题,叫我重温一下之前的知识,然后去参考一下开源项目,我决定边复习边写博客,就这样......
  • 用C#实现最小二乘法(用OxyPlot绘图)✨
    最小二乘法介绍✨最小二乘法(LeastSquaresMethod)是一种常见的数学优化技术,广泛应用于数据拟合、回归分析和参数估计等领域。其目标是通过最小化残差平方和来找到一组参数,使得模型预测值与观测值之间的差异最小化。最小二乘法的原理✨线性回归模型将因变量(y)与至少一个自变量......
  • [国家集训队] 矩阵乘法 整体二分
    [国家集训队]矩阵乘法题目描述给你一个\(n\timesn\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(k\)小数。输入格式第一行有两个整数,分别表示矩阵大小\(n\)和询问组数\(q\)。第\(2\)到第\((n+1)\)行,每行\(n\)个整数,表示这个矩阵。第\((i+1)\)行......
  • hdu 4990 Reading comprehension(矩阵乘法)
    Readtheprogrambelowcarefullythenanswerthequestion.pragmacomment(linker,"/STACK:1024000000,1024000000")includeincludeincludeincludeincludeincludeconstintMAX=100000*2;constintINF=1e9;intmain(){intn,m,ans,i;while(sc......
  • 矩阵乘法 - CF678D Iterated Linear Function
    CF678DIteratedLinearFunction题意\(f_{i,x}=A\timesf_{i-1,x}+B\)且\(f_{0,x}=x\)求\(f_{n,x}\)。思路这道题的递推关系十分清晰。但由于数据范围大(\(1\leA,B,x\le10^9,1\len\le10^{18}\)),所以这道题只能使用矩阵乘法加速递推。矩阵的构造我们需要构造一个......
  • 矩阵乘法代码
    voidMatrixChain(intp[],intn,int**m,int**s){for(inti=1;i<=n;i++)m[i][i]=0;//初始化for(intr=2;r<=n;r++){for(inti=1;i<=n-r+1;i++){intj=i+r-1;m[i][j......
  • #yyds干货盘点# LeetCode程序员面试金典:复数乘法
    题目复数可以用字符串表示,遵循"实部+虚部i"的形式,并满足下述条件:实部是一个整数,取值范围是[-100,100]虚部也是一个整数,取值范围是[-100,100]i2==-1给你两个字符串表示的复数num1和num2,请你遵循复数表示形式,返回表示它们乘积的字符串。 示例1:输入:num1="1......
  • 模p下的乘法逆元
    defextended_gcd(a,b):"""扩展欧几里得算法,返回(gcd(a,b),x,y)其中a*x+b*y=gcd(a,b)"""ifa==0:returnb,0,1else:g,x,y=extended_gcd(b%a,a)returng,y-(b//a)*x,x......
  • 输一个个数,想要的乘法口诀表 函数实现
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidchengfa(inta){ for(inti=1;i<=a;i++) { for(intj=1;j<=i;j++) { printf("%d*%d=%-6d",j,i,j*i); } printf("\n"); }}intmain(){ inta=......