BSGS(baby step gaint step)+快速幂+exgcd逆元

循环节定理+bsgs 哈尔滨理工ACM程序设计全国邀请赛(网络同步赛) G.Recurring Decimal G Recurring Decimal Description As we all know, any scores are can be written in an  infinite recurring decimal or a finite decimal ,for  example,1/7 can be written in 0.(142857).(recurring  peri 阅读详情
  1. 一个神奇的算法, 快速求出 A^x=B(mod C),C是素数,求最小的非负x值 若x有解,那么 0<=x < C, 为什么?

    由费马小定理可以得a^(c-1) = 1(mod c)
    那么0~c-1必定是一个循环节(不一定是最小的)。既然是%c,那么B一定是0到c-1之间的一个数。最坏的条件下,a的c-1以内次方%c的余数各不相同,那么在0~C-1时一定存在一个x满足条件。
    那么不是最坏情况时, 就能找到一个更小的在0~c-1的循环节。

    BSGS的算法是这样的:

    首先取m=sqrt(c)向上取整。(为什么取sqrt(c)?我也不是很懂)

    然后先预处理a的0到m次方。

    a^x=b ( %c ) 设x=i*m+j; 即: i为x/m,j为x%m。 a^(i*m+j)=b; b * (a^(-m))^i =
    a^j ( %c )

    先枚举j,把右边存起来(Hash 下一步用二分查找, 或哈希表) 枚举i,如果左边的数值曾经存储过(b * (a^(-m))^i =
    a^j),则 x=i*m+j, 得解。

  2. 快速幂, 其实很好理解, 对于求x^y mod p
    我们可以把每次的乘积存下来, 最后一起累乘, 即
    2^10
    = 2^5 * 2^5
    那么每次把y>>=1, 如果y是奇数那么就把这次分出的答案乘进答案
  3. xy mod p = z mod p
    求最小的x, 其实很简单, 可以将方程变成ax+by=c
    同时除以gcd(a, b), 如果c除不尽那么无解
    否则变成a0x+b0y=c0;->(a0x+b0y=1;x,y乘以c0)

下面给一个例题;
给出下列三种操作
1、给定 y、z、p,计算 y^z mod p 的值;
2、给定 y、z、p,计算满足 xy ≡z(mod p)的最小非负整数 x;
3、给定 y、z、p,计算满足 y^x ≡z(mod p)的最小非负整数 x.
三个操作都在上面讲过了下面给出代码

#include <bits/stdc++.h>
using namespace std;

#define hash Hash
#define rep(i, s, t) for(int i = s; i <= t; ++i)

typedef long long ll;

ll p;
ll calc1(ll x, ll y) {
    ll res = 1LL;
    for(; y; y>>=1) {if(y & 1) res = res*x % p; x = x*x % p;}
    return res;
}

ll gcd(ll a, ll b) {
    while(b) {
        ll t = a;
        a = b;
        b = t%b;
    }
    return a;
}

void exgcd(ll a, ll b, ll &x, ll &y) {
    if(!b) {
        x = 1; y = 0;
    }
    else {
        exgcd(b, a%b, y, x);
        y -= a/b*x;
    }
}

struct HASH_TABLE {
    const ll mod = 100007;
    ll h[100007+10][2];

    ll find(ll x) {
        ll t = x % mod;
        while(h[t][0] != x && h[t][0] != -1) t = (t+1) % mod;
        return t;
    }

    void insert(ll x, ll id) {
        ll t = find(x);
        if(h[t][0] == -1)
            h[t][0] = x, h[t][1] = id;
    }

    ll get(ll x) {
        ll t = find(x);
        return h[t][1];
    }

    void BSGS(ll a, ll b, ll p) {
        memset(h, -1, sizeof(h));
        ll m = ceil(sqrt(p)), t = 1;
        rep(i, 0, m-1) {
            insert(t, i);
            t = t*a%p;
        }
        ll d=1, x, y;
        ll ans = -1;
        rep(i, 0, m-1) {
            exgcd(d, p, x, y);
            x = ((x*b) % p + p)%p;
            y = get(x);
            //printf("%lld,%lld\n",x,y);
            if(y ^ -1) {
                ans = i*m+y;
                break;
            }
            d = d*t % p;
        }
        if(ans == -1) puts("Orz, I cannot find x!");
        else printf("%lld\n", ans);
    }
}T;

int main() {
#ifndef ONLINE_JUDGE
    freopen("calc.in", "r", stdin);
    freopen("calc.out", "w", stdout);
#endif
    int _, cmd;
    scanf("%d%d", &_, &cmd);
    while(_--) {
        ll y, z, a, b;
        scanf("%lld%lld%lld", &y, &z, &p);
        if(cmd == 1) cout << calc1(y, z) << endl;
        else if(cmd == 2) {
            ll Gcd = gcd(y, p);
            if(z % Gcd)
                puts("Orz, I cannot find x!");
            else {
                z %= p;
                y /= Gcd; p /= Gcd; z /= Gcd;
                exgcd(y, p, a, b);
                a = (a * z % p + p) % p;
                printf("%lld\n", a);
            }
        }
        else {
            if(y%p==0) {
                if(z==1) printf("0\n"); else puts("Orz, I cannot find x!");
                continue;
            }
            T.BSGS(y, z, p);
        }
    }
    return 0;
}
YOLO26算法大门区域检测+训练好的模型+285张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[大门(gates)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 64 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6364** mAP50-95 | 0.4539 Precision | 0.7309 Recall | 0.6111 train/box_loss | 0.6662 train/cls_loss | 0.5916 val/box_loss | 1.3351 val/cls_loss | 1.5479 【训练过程分析】 训练过程可分成三个主要阶段:前期、中期和后期。刚开始时,模型的损失函数确实有了显著下降,box_loss 从0.6662开始,经过几轮的迭代,迅速降至0.5左右。但到了中期,loss 的下降速度明显放缓,甚至有停滞不前的趋势。这一现象在val/box_loss的表现上尤其明显,从1.3351缓慢上升至1.4左右,直到训练到64轮时才略有下降。在这一阶段,mAP50从0.6364仅轻微上升到0.64,提升有限。这期间,模型似乎陷入了平台期,进展缓慢,让人感到有些煎熬。从第30轮到第64轮,我频繁查看曲线图,希望能捕捉到一点改善的迹象,但都未能如愿。这个阶段也让我对模型的潜力产生了怀疑,担心训练过程可能需要更长时间才能看到显著改善。 进入后期阶段,尽管损失函数略有下降,但mAP50的提升并不明显,这让人感到非常... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

高校技术转移办公室人员如何构建技术交易平台的智能推荐机制?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

CINTA作业三 同余、模指数、费尔马小定理、欧拉定理

CINTA作业三 同余、模指数、费尔马小定理、欧拉定理 1、实现求乘法逆元的函数,给定a和m,求a模m的乘法逆元,无解时请给出无解提示,并且只返回正整数。进而给出求解同余方程(ax = b mod m)的函数,即给定a,b,m,输出满足方程的x,无解给出无解提示。 #include <iostream> using namespace std; int* Egcd(int a, int b) { int r_0 = 1, s_0 = 0, r_1 = 0, s_1 = 1, q, temp

清风Galaxy的博客 340

基于mongodb, express, react, node开发的商店应用

1、角色管理,支持买家和卖家 2、 支持创建、编辑、删除拍卖 3、支持投标

BSGS&扩展BSGS

BSGS给定a,b,pa,b,p,求xx使得ax≡b(mod p)a^x\equiv b (mod~p),或者说明不存在xx 普通的BSGS只能求gcd(a,p)=1gcd(a,p)=1的情况 先证明几个结论:如果有解则必然存在x∈{0…p−1}x\in\left\{0\ldots p-1\right\}的解 证明是显然的 ab mod ϕ(p)≡ab(mod p)a^{b~mod~\phi

ez_yww的博客 505

状态估计【卡尔曼滤波kalman】UKF、EKF、粒子滤波PF学习与研究(Matlab代码实现)

内容概要:本文围绕非线性状态估计中的三种经典滤波算法——无迹卡尔曼滤波(UKF)、扩展卡尔曼滤波(EKF)和粒子滤波(PF)展开系统性学习与研究,重点在于通过Matlab编程实现这些算法的核心流程,并将其应用于实际系统的状态估计问题中。文档不仅详细阐述了各算法的数学原理、适用条件与性能差异,还提供了完整的仿真代码与案例分析,帮助读者深入理解其在非线性、非高斯环境下的表现特性。同时,资源拓展至EKF与神经网络融合训练、多源数据融合等高级应用场景,展现了其在智能控制、无人机导航、电力系统状态估计、目标跟踪等领域的广泛应用价值。; 适合人群:具备一定信号处理、控制理论或状态估计基础的研究生、科研人员及工程技术人员,尤其适用于从事自动化、机器人、导航、电力电子与智能系统等相关方向的研究与开发工作者;; 使用场景及目标:① 掌握UKF、EKF与PF在非线性系统中的建模思路与Matlab实现方法,理解其优缺点与适用边界;② 提升科研仿真能力,能够独立构建状态估计模型并进行算法对比验证;③ 将所学方法应用于如电池SOC估算、无人机姿态估计、传感器融合、故障诊断等实际工程问题中;; 阅读建议:建议结合Matlab动手实践,逐行解读并调试所提供的代码,深入理解算法实现细节;同时可延伸学习文中提及的数据融合、神经网络与滤波器结合等进阶主题,以构建完整的状态估计技术知识体系。

Plecs全桥LLC谐振变换器仿真模型

内容概要:本文档系统性地整合了电力电子与控制系统仿真领域的丰富资源,聚焦于基于Plecs和Simulink平台的高频软开关变换器建模与仿真,涵盖全桥LLC、双向CLLC、DAB、PFC、Vienna整流器、Buck-Boost等多种典型拓扑结构。资源内容不仅包括闭环控制(如变频控制、移相混合控制、双闭环、恒压恒流双竞争控制)的仿真模型,还配套提供详细的参数设计报告、Mathcad计算书、PPT说明文档及参考文献,构建了从理论建模到工程实现的完整技术链条。此外,文档拓展至状态估计(如卡尔曼滤波、EKF、UKF、PF)与智能算法(如BP神经网络、模型预测控制)在电力系统中的融合应用,为先进控制策略的研究与复现提供了坚实支撑。; 适合人群:面向具备电力电子、自动控制或电气工程等相关专业背景,熟练掌握MATLAB/Simulink/Plecs等仿真工具,从事高频开关电源、新能源变换系统、储能系统或车载电源研发的研究生、高校科研人员及企业工程技术人员。; 使用场景及目标:① 学习并掌握全桥LLC等谐振变换器的核心工作原理与闭环控制系统设计方法,特别是变频与移相控制策略的实现细节;② 利用提供的仿真模型与Mathcad计算工具,快速完成实际项目中的参数设计、性能验证与优化迭代;③ 结合状态估计算法与神经网络等智能方法,开展电力电子系统状态观测、故障诊断或控制策略创新等前沿科研课题的复现与探索。; 阅读建议:建议严格按照资源目录结构循序渐进地查阅,优先下载并运行核心仿真模型,结合对应的设计报告与计算书深入理解其建模逻辑与参数推导过程,重点关注闭环控制架构、软启动策略及中点电位平衡等关键技术环节,并可进一步将状态估计与智能算法模块融入现有模型,探索其在系统优化中的应用潜力。

CINTA作业3:同余、模指数、费尔马小定理、欧拉定理

数论:同余、模指数、费尔马小定理、欧拉定理 1、实现求乘法逆元的函数,给定a和m,求a模m的乘法逆元。无解时请给出无解提示,并且只返回正整数。进而给出求解同余方程(ax≡b mod m)的函数,即给定 a,b,m,输出满足方程的x,无解给出无解提示。 代码----乘法逆元的函数 #include<cmath> int GCD(int x,int y); //return GCD(x,y) bool Primer01(int a); //a is primmer number,return

m0_50438974的博客 643

【扩展卡尔曼滤波器EKF】基于UWB雷达的SLAM能够在室内环境内映射自然点地标,并改善机器人定位(Matlab代码实现)

内容概要:本文介绍了基于Plecs软件构建的全桥LLC谐振变换器仿真模型,重点围绕LLC谐振变换器的工作原理、建模方法与仿真设计展开。该模型可用于研究全桥LLC在软开关条件下的动态响应特性、效率优化及参数设计,涵盖谐振频率调节、变频控制策略、电压增益特性等关键技术内容,帮助深入理解LLC拓扑在高频高效电源转换中的应用。; 适合人群:具备电力电子基础知识,从事电源设计、新能源变换系统研发的工程师及研究生。; 使用场景及目标:①用于教学与科研中对LLC谐振变换器工作模态的分析;②辅助完成高性能DC-DC变换器的参数设计与控制策略验证;③支持对软开关技术、谐振网络优化等方面的深入研究; 阅读建议:建议结合其他LLC相关设计资料与仿真工具(如Simulink)进行对比学习,重点关注谐振参数选取与仿真波形分析,以提升对实际工程问题的解决能力。

c语言用pow求x的y次幂,使用系统函数pow(x,y)计算x的y次方的值,注意包含头文件math.h...

#include //c语言#include int main(){double m,x,y;printf("请输入两个数:");scanf ("%d %d",&x,&y);m=pow(double x,double y);printf("%d",m);return 0;} //我没有调试哈,有问题自己该哈#include #include using namespace std...

weixin_35988178的博客 3114

单相boost功率因数校正 PFC电路仿真(Simulink仿真实现)

内容概要:本文详细介绍了基于Plecs软件构建的全桥LLC谐振变换器仿真模型,系统阐述了LLC谐振变换器的工作原理、建模方法及仿真实现过程。该模型能够有效分析变换器在不同工况下的动态响应特性,包括软开关的实现条件、谐振参数的设计影响、系统效率优化等方面,并支持开环与闭环控制策略的验证。文档深入探讨了LLC拓扑的电压增益特性、零电压开关(ZVS)的实现机制以及磁性元件参数对系统性能的作用,配套提供了完整的仿真资源体系,涵盖参数计算、控制策略设计与性能评估等内容,形成了从理论到实践的完整研究闭环,有助于深入掌握LLC谐振变换器的核心设计要素与工程应用要点。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事开关电源、新能源变换器研发的工程技术人员。; 使用场景及目标:①用于教学与科研中对LLC谐振变换器工作机理的理解与验证;②辅助工程师完成实际产品开发中的参数设计与控制策略优化;③支持对软开关技术、高频高效电源变换等前沿方向的研究。; 阅读建议:建议结合Plecs或Simulink等仿真工具动手实践,对照文档中的模型结构与参数设置进行仿真复现,并通过调整谐振腔参数、开关频率等变量观察系统响应变化,以加深对LLC变换器非线性特性和控制难点的理解。

港股十档tick数据提供逐笔更新行情,包含时间戳、最新价、涨跌幅、成交量与成交额,以及买一至买十、卖一至卖十的价格和挂单量 逐笔成交数据记录每笔交易的时间、成交价、成交量及买卖方向 分钟数据按每分钟聚

港股十档tick数据提供逐笔更新行情,包含时间戳、最新价、涨跌幅、成交量与成交额,以及买一至买十、卖一至卖十的价格和挂单量。逐笔成交数据记录每笔交易的时间、成交价、成交量及买卖方向。分钟数据按每分钟聚合,涵盖开盘价、最高价、最低价、收盘价、成交量和成交额。上述数据覆盖十五年历史,以csv表格形式呈现,字段齐全,适合直接用于量化回测或行情分析。 数据源:CMES金融数据库

C++快速幂的原理

说到这个题目,有一道题,要求要算出x的y次方模p等于多少x^y%p假设,y=37,那么用乘法算就要有36次乘法运算,大概是这样:x*x*x*x*x*x*x*x......*x(乘了36次)写作C++程序的话是这样的 这样的时间复杂度是O(y),因为它是for循环走了y遍时间复杂度太高而快速幂就完美解决了这一点,他的原理如下:这样我们可以看到时间复杂度大幅降低了还有在快速幂时,一定要把int类型变量改为long long不然会报int!!!...

bluecraft_m的博客 525

Linux环境下OpenSSH升级到 OpenSSH_9.8p1(内置保姆级教程并包含openssl升级过程)

2024年7月1日接到安全部门同事邮件通知,目前生产环境及测试环境服务器Openssh存在远程代码执行漏洞(CVE-2024-6387),漏洞等级高,且攻击者可以成功利用该漏洞获得远程root shell最高权限从而执行任意代码及命令,主要受影响版本为8.5p1

菜鸟运维升级之路 2万+

CINTA作业三:同余、模指数、费尔马小定理、欧拉定理

3、设p = 23和a = 5,使用费尔马小定理计算a^{2020} mod p? 解:mod 23=

LuoRiiXx的博客 277

SIwave学习记录:电热耦合仿真

SIwave电热耦合仿真

m0_68174736的博客 2335

告别官方WebRTC的30G编译:我用libdatachannel给USB摄像头做了个轻量级网页监控

本文介绍了一种基于libdatachannel的轻量级WebRTC监控方案,通过USB摄像头实现实时视频推流。相比官方WebRTC库30GB的庞大编译体积,libdatachannel仅需几十MB,大幅简化了开发流程。文章详细讲解了从视频采集、FFmpeg编码到WebRTC传输的全过程,并提供了性能优化和部署方案,帮助开发者快速构建高效的网页监控系统。

weixin_29207533的博客 533

BSGS(Baby Step Gaint Step)

用于求\(A^{x} \equiv B \pmod{C}\) 高次方程的最小正整数解x,其中C为素数 引理1:$a^{i\mod\varphi(p) } \equiv a^{i} $ (mod p) p为素数,即\(a^i\)在模p的意义下会出现循环节(注:\(\varphi(p)\)不是最小循环节) 证明: 因为$ a^{p-1} \equiv 1 $ (mod p) (费马小定理) ,则 \...

weixin_30852367的博客 148

1. Klipper从安装到运行

本文记录Klipper固件从安装,配置到运行的详细过程

weixin_42098934的博客 1万+

BSGS&&ExBSGS

BSGS 和 ExBSGS 都是用于解决形如形如下式的高次同余方程的。 \[ a^x\equiv b\ (mod\ p) \] 同样的先考虑a,p为质数的情况。 令: \[ x=i*t-j \] 那么: \[ a^x\equiv b\ (mod\ p) \iff a^{i*t-j}\equiv b\ (mod\ p) \iff a^t\equiv b*a^j\ (mod\ p) \] 可以对于...

weixin_30690833的博客 263

告别报错!Win10下Autodock Vina 1.2.3保姆级安装与避坑指南

本文提供了Win10系统下Autodock Vina 1.2.3的完整安装与实战指南,涵盖环境配置、分子文件预处理、对接参数优化及结果分析等关键步骤。通过详细的避坑技巧和优化方案,帮助用户高效完成分子对接任务,特别适合生物信息学研究人员和药物发现领域的初学者。

weixin_29969209的博客 402

scp 出现Permission denied错误 解决方法

第一种说辞(来源于网络),说是scp涉及root远程登录,默认是没有打开的,只需要把配置文件中的permit打开即可。最后scp的时候发现还不行,只需要将其scp的服务器用户名 修改为root即可。第二种解决方案,将scp 传输的服务器用户名改为root即可。(这是最基本的,一开始我忽视了这个问题,导致一直scp不了)window系统下,向ubuntu操作系统 scp传输文件。

码农研究僧的博客 6728

C++:求解(x^y mod p)时的两种解法

1.常用快速幂 #include<bits/stdc++.h> using namespace std; #define ll long long ll x,y,p; ll ksm1(ll a,ll b,ll mod){ ll res=1; while(b){ if(b&1)res=(res*a)%mod; b>>=1; a=a*a%mod; } return res; } int main(){ cin>>x>>y>&

m0_53842982的博客 938

005、开关电源中的基本拓扑结构简介

本文介绍了开关电源设计中常见拓扑结构的特性与选型经验。文章从实际炸机案例入手,强调深入理解拓扑的重要性,详细分析了Buck、Boost、Buck-Boost等非隔离拓扑以及反激、正激、半桥、全桥、LLC等隔离拓扑的工作原理、设计要点和典型误区,重点指出各拓扑的电压/电流应力、效率瓶颈和常见设计错误。作者根据多年经验总结出不同功率等级和输入输出条件下的拓扑选型原则,并强调细节设计对成败的决定性影响。文章通过大量工程实例说明,正确的拓扑选择和参数计算是电源设计成功的基础,而忽略基础原理将导致反复修改甚至炸机风险

Jack010169的博客 224

bsgs(崭新的姿势)

前言: 今天高一hu测,出了一道exbsgs (还让我帮忙造数据,然而我造的数据特别水,暴力都可以跑过,最后还是澍神帮了忙。。。) 然而并不会,以为又要花时间学习新知识了, DP却和我说有一种奇技淫巧,因此就来填坑了。。。 以前学过bsgs 当时我们是这么化的式子: x^y(mod p)=z y=km+i(m=sqrt(p)) 处理出: x^i,扔进一个map中 x^i=z*x...

Coco_T的博客 934

MIKE水动力笔记8_冷启动与热启动

在【MIKE水动力笔记5_建立水动力模型】中,讲到【Step 2 设置模型参数】中的【Initial Conditions】时,提到了冷启动与热启动。本博文就详细讲解何为冷启动、热启动,并通过一个案例具体分析两者不同。...

晏长街的博客 6568

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: POJ 2763 LCA+BIT
下一篇: POJ 3255 A* k_th path
__Galaxy
博客等级 码龄10年 8粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值