首页 > 其他分享 >离散对数 & BSGS 学习笔记

离散对数 & BSGS 学习笔记

时间:2024-07-28 11:17:13浏览次数:8  
标签:原根 离散 ga ind 对数 operatorname BSGS

离散对数

离散对数的定义方式和对数类似.取有原根的正整数模数 \(m\) ,设其一个原根为 \(g\) .对满足 \((a,m)=1\) 的整数 \(a\),我们知道必存在唯一的整数 \(0\leq k<\varphi(m)\) 使得 \(g^k\equiv a\pmod m\) .
我们称这个 \(k\) 为以 \(g\) 为底,模 \(m\) 的离散对数,记作 \(k=\operatorname{ind}_g a\) ,在不引起混淆的情况下可记作 \(\operatorname{ind} a\) .

看看有啥性质.
设 \(g\) 是模 \(m\) 的原根, \((a,m)=(b,m)=1\) .

  1. \(\operatorname{ind}_g(ab)\equiv\operatorname{ind}_ga+\operatorname{ind}_gb\pmod{\varphi(m)}\)
    ,进而对于 \(n\in\mathbf{N}\) 有 \(\operatorname{ind}_g(a^n)\equiv n\operatorname{ind}_ga\pmod{\varphi(m)}\) .

标签:原根,离散,ga,ind,对数,operatorname,BSGS
From: https://www.cnblogs.com/01bit/p/18328000

相关文章

  • Matlab编程资源库(10)离散傅立叶变换
    一、离散傅立叶变换算法简要给定一个N点的离散信号序列x(n),其中n表示时刻,n=0,1,2,...,N-1。定义离散傅立叶变换的频域序列X(k),其中k表示频率,k=0,1,2,...,N-1。通过以下公式计算每个频率对应的复数值: X(k)=Σx(n)*exp(-j*2π*kn/N),其中j表示虚......
  • 【高中数学/指数、对数】比大小:log_9_10 VS log_10_11
    【问题】比大小:log_9_10VSlog_10_11【解答】下面将采用列表法分步解答原式log_9_10log_10_11变换(关键步骤)log_9_9*10/9log_10_10*11/10分离log_9_9+log_9_10/9log_10_10+log_10_11/10简化1+log_9_10/91+log_10_11/10指代设a=log_9_10/9设b=log_10_11/10指数化9^a=10/910^......
  • 2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素
    2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1。然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的。要求找出最多可以选出的元素数量。输入:nums=[2,1,5,1,1]。输出:3。解释:我们将下标0和3处的元素增加1......
  • 离散化
    #include<iostream>#include<algorithm>usingnamespacestd;int*a,*d,*c,n,ctop;//a原数组d为排序后的数组c为去重后的数组intbin_search(inttarget){ intl=1,r=ctop; while(l<r){ intmid=l+r>>1; if(c[mid]>=target)......
  • js 对数组进行任意层、n层分组
    如果分组层数是动态的,即可以是n层,可以使用递归函数来实现。以下是一个示例代码,展示了如何实现动态层数分组:const_=require('lodash');//示例数据letdata=[{category:'A',type:'X',subType:'Alpha',value:1},{category:'A',type:'X&......
  • es6中对数组的常用操作方法-普通数组
    参考https://www.jianshu.com/p/856f4200d3c0最近,经常操作数组,可是数组中的一些常用操作方法很迷糊,看了上面一篇文章之后,茅塞顿开。于是自己按照上面文章的用法,自己全部从头到尾写了一遍,分为普通的数组以及对象数组的操作。//定义数组constarr=[1,2,3,4,5]......
  • es6中对数组的常用操作方法-对象数组
    //定义对象数组constarrayObject=[{name:'name1',title:'title1'},{name:'name2',title:'title2'},{name:'name3',title:'title3'}];//数组对象......
  • 洛谷题单指南-前缀和差分与离散化-P3397 地毯
    原题链接:https://www.luogu.com.cn/problem/P3397题意解读:给定一个n*n的矩阵,每个元素初始值为0,再将m个子矩阵中的元素都增加1,统计每个元素最终的值。解题思路:1、暴力法枚举每一个子矩阵,将对应元素值加1,时间复杂度为1000^3,不可行。2、二维差分对于给定二维数组s[][],给指定区......
  • 洛谷题单指南-前缀和差分与离散化-P2367 语文成绩
    原题链接:https://www.luogu.com.cn/problem/P2367题意解读:对于数组s[],给指定q个区间[x,y]里每个数增加z,计算操作之后最小的数。解题思路:1、暴力做法对于每一个区间[x,y],枚举给每一个数增加z,然后遍历查找最小值,总体时间复杂度为O(N^2),不可行。2、一维差分对于给指定区间[x,......
  • BSGS 学习笔记
    BSGS拔山盖世、北上广深……实际上叫大步小步,用于解决高次同余方程,形如:\[a^x\equivb\pmodp\]求\(x\)。设\(x=i\timest-j\),有:\[a^{i\timest-j}\equivb\pmodp\]\[a^{i\timest}\equivb\timesa^j\pmodp\]预处理每个\(j\),枚举\(i\)处理,\(t\)取\(\sqrtn\)最......