poj 2417 && poj3243(Baby-Step Giant-Step)

POJ 3243 离散对数-高次同余方程求解 求离散对数 用的是小步大步算法 也就是babystep 算法结合hash 来处理的  #include #include #include #include #include using namespace std; #define maxn 65535 struct hash { int a,b,next; } Hash[maxn*2]; int flg[maxn+66]; int 阅读详情

Discrete Logging
Time Limit: 5000MS Memory Limit: 65536K
Total Submissions: 4624 Accepted: 2113

Description

Given a prime P, 2 <= P < 231, an integer B, 2 <= B < P, and an integer N, 1 <= N < P, compute the discrete logarithm of N, base B, modulo P. That is, find an integer L such that 
    BL == N (mod P)

Input

Read several lines of input, each containing P,B,N separated by a space.

Output

For each line print the logarithm on a separate line. If there are several, print the smallest; if there is none, print "no solution".

Sample Input

5 2 1
5 2 2
5 2 3
5 2 4
5 3 1
5 3 2
5 3 3
5 3 4
5 4 1
5 4 2
5 4 3
5 4 4
12345701 2 1111111
1111111121 65537 1111111111

Sample Output

0
1
3
2
0
3
1
2
0
no solution
no solution
1
9584351
462803587

题意:

a^x = b(mod n) ,求解x(模板题)


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
typedef long double ld;

using namespace std;
#define MOD 76543
int hs[MOD],head[MOD],Next[MOD],id[MOD],top;

void insert(int x,int y)
{
    int k = x % MOD;
    hs[top] = x,id[top] = y,Next[top] = head[k],head[k] = top++;
}

int find(int x)
{
    int k = x % MOD;
    for(int i = head[k];i != -1;i= Next[i])
    {
        if(hs[i] == x)
            return id[i];
    }
    return -1;
}

int BSGS(int a,int b,int n)
{
    memset(head,-1,sizeof(head));
    top = 1;
    if(b == 1)
        return 0;
    int m = sqrt(n*1.0),j;
    long long x = 1,p =1;
    for(int i = 0;i < m;i++,p = p*a%n)
    insert(p*b%n,i);
    for(ll i = m;;i+=m)
    {
        if((j = find(x = x*p % n)) != -1) return i-j;
        if(i > n) break;
    }
    return -1;
}

int main()
{
    int p,b,n;
    while(scanf("%d%d%d",&p,&b,&n) != EOF)
    {
        int ans = BSGS(b,n,p);
        if(ans == -1)
            printf("no solution\n");
        else
        printf("%d\n",ans);
    }
    return 0;
}



POJ3243 Clever Y 解 高次同余方程 解高次同余方程A^x≡B(mod C)算法流程 S1:i从0到100循环,如果满足A^i≡B(mod C),那么i就为所求,否则继续S2; S2:令d=0,D=1,执行如下循环: while((tmp=gcd(A,C))!=1) { if(B%tmp) return -1; //无解 ++d; C/=tmp; B/=tm 阅读详情

相关推荐

雷赛控制卡全方位使用指南:从硬件连接到高级应用

雷赛控制卡以其接口简单、编程便捷、性价比高的特点,成为中小自动化设备的理想选择。使用时需注意:硬件连接需注重抗干扰设计(屏蔽线、接地);软件开发需合理配置运动参数(脉冲当量、加减速);调试阶段需充分利用 DMCStudio 工具验证性能。通过本文介绍的方法,可快速实现从硬件搭建到复杂运动控制的全流程开发,满足雕刻、切割、装配等多场景的自动化需求。

品质生活,极致编程。 3770

POJ 2417 Discrete Logging 离散对数

链接:http://poj.org/problem?id=2417 题意: 思路:求离散对数,Baby Step Giant Step算法基本应用。 以下转载自:AekdyCoin 【普通Baby Step Giant Step】 【问题模型】 求解 A^x = B (mod C) 中 0 【思路】 我们可以做一个等价 x = i * m + j  ( 0 而

看曙光 1133

【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)

前言 今天老师说办公室的电脑有点卡,让我给重新安装一个 Windows 7 系统。于是就用软碟通(UltraISO)在 U 盘上刻录了一个 Windows 7 镜像,然后给老师重装了系统。顺便把制作 U 盘启动盘的教程也分享给大家。 软件 UltraISO v9.7.1.3519:点击跳转(密码:dd2k) 教程 将 U 盘插到电脑上,然后鼠标右击选择格式化(制作启动盘必须格式化) 点击文件-打开 选择下载好的系统镜像(如:Windows 7) 点击启动-写入硬盘映像 选择硬盘

XavierJ的博客 2万+

【poj2417】Discrete Logging

Time Limit: 5000MS Memory Limit: 65536K Description Given a prime P, 2 &lt;= P &lt; 231, an integer B, 2 &lt;= B &lt; P, and an integer N, 1 &lt;= N &lt; P, compute the discrete loga...

StrideTG的博客 416

保姆级教程:在RK3588开发板上用CMake交叉编译ZLMediaKit(附完整toolchain配置)

本文提供了一份详细的RK3588开发板上使用CMake交叉编译ZLMediaKit的教程,包括完整的toolchain配置和实战避坑指南。从环境准备、工具链配置到依赖处理、编译部署,手把手指导开发者完成ARM64架构的流媒体服务搭建,特别适合嵌入式开发新手。

weixin_28681255的博客 383

嵌入式开发实战:LWIP中PPP协议配置全流程(含CHAP认证避坑指南)

本文是一份嵌入式开发实战指南,详细解析了如何在STM32平台上配置LWIP协议栈中的PPP协议,实现从串口到IP网络的完整连接。内容涵盖工程搭建、源码整合、关键配置、串口驱动绑定、状态管理以及CHAP认证等核心流程,并重点提供了CHAP认证失败的排查与避坑指南,帮助开发者高效打通嵌入式设备的网络连接。

plant的博客 461

【poj3243】Clever Y

Time Limit: 5000MS Memory Limit: 65536K Description Little Y finds there is a very interesting formula in mathematics: X^Y mod Z = K Given X, Y, Z, we all know how to figure ou...

StrideTG的博客 408

【深度强化学习】(2) Double DQN 模型解析,附Pytorch完整代码

Double DQN 算法是 DQN 算法的改进版本,解决了 DQN 算法过估计行为价值的问题。Double DQN 算法不直接通过最大化的方式选取目标网络计算的所有可能 Q 值,而是首先通过估计网络选取最大 Q 值对应的动作。在 Double DQN 框架中存在两个神经网络模型,分别是训练网络与目标网络。这两个神经网络模型的结构完全相同,但是权重参数不同;每训练一段之间后,训练网络的权重参数才会复制给目标网络。

博观而约取,厚积而薄发 1万+

Baby Step Giant Step

Baby Step Giant Step的模板题 直接上模板

ZZ 737

【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步

【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步

m0_52031708的博客 3844

6、业务影响分析(BIA)的数据收集与关键指标评估

本文全面解析了业务影响分析(BIA)的核心内容,包括数据收集、业务流程分析、信息系统与资产清单、人员与供应商依赖、影响声明、关键指标评估(如MTD、RTO、RPO)、威胁建模与风险分析等。通过详细的介绍和图表展示,帮助组织系统性地制定灾难恢复计划,以应对各种潜在风险,确保关键业务流程在灾难发生后能够快速恢复并持续运营。

moss5的博客 374

POJ 2417:Discrete Logging——Baby Step, Giant Step

题意:求最小的Y,满足XY mod Z = K高次同余方程,用hash做,套模板。。从网上找的模板与POJ 3243的区别在于:POJ 2417 保证P是素数且B POJ 3243 就没有这些好条件。这会导致麻烦,待会再说。一:#include #include #include #define maxn 65535 using namespace std; struct hash

Booky的专栏 537

飞牛fnNAS搭建个人小账本

本文介绍了如何在飞牛NAS上部署ezBookkeeping个人记账应用。该开源工具支持多平台使用,具备双因素认证、多级分类等功能。文章详细讲解了Docker激活、镜像下载、容器部署等步骤,并展示了账户管理、交易记录等基础操作。同时指导用户通过ZeroTier实现远程访问,方便随时随地使用个人记账系统。该方案既保障了数据隐私,又提供了专业记账功能,适合对财务隐私敏感的用户。

dgnankai的专栏 782

高次同余方程:poj 3243+poj 2417+hdu 2815 (Baby Step Giant Step 算法)

个人水平有限,套用的模板,学习资料如下: 题目链接:poj 3243 http://poj.org/problem?id=3243                     poj 2417 http://poj.org/problem?id=2417                     hdu 2815 http://acm.hdu.edu.cn/showproblem.php?pid=

Hacker_vision 958

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【POJ 3243-Clever Y】 与【POJ 2417-Discrete Logging】(解高次同余方程 Baby-Step-Gaint-Step)

Clever Y Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 7969   Accepted: 1986 Description Little Y finds there is a very interesting formula in mathematics:

Some. 786

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

POJ 2417 && POJ 3243 求解高次同余方程 BSGS

题意:   对于A^X===B(mod C)中当A,B,C已知的情况下求X 算法流程如下: i)for i=0 i to100 if(A^i===B(mod c)) 那么i就是答案 否则执行下一步 ii)令d=0,D=1 执行下叙循环 while((tmp=gcd(A,C))!=1){ if(B%tmp)return -1; ++d; C/=tmp; B/=tmp;

MY Blog 531

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

高次同余方程

详解 下面的模板中是,调用函数时是A,B,C A^x=B(mod C) poj3243(模板题) #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; const int INF=0x3f3f3f3f; typed...

weixin_43184669的博客 280

POJ 3243 Clever Y (求解高次同余方程A^x=B(mod C) Baby Step Giant Step算法)

不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostream> #include <stdio.h> #include <math.h> #include <string.h> #de...

weixin_30735745的博客 141

高次同余方程(BSGS算法模板)

裸题(n是素数) POJ 2417 #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #includ...

weixin_41934068的博客 310

BSGS及扩展BSGS模板

BSGS #include <iostream>//poj2417 #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #define ll long long using namespace std; const i...

weixin_30492601的博客 163

【离散对数BSGS】总结

BSGS算法简述 对于一个方程: Ax≡B(mod&amp;nbsp;C)Ax≡B(mod&amp;nbsp;C)A^x\equiv B(mod\space C) 求能满足条件的最小的x(GCD(A,C)=1)x(GCD(A,C)=1)x(GCD(A,C)=1) 由于GCD(A,C)=1GCD(A,C)=1GCD(A,C)=1,所以一定满足Aφ(C)≡1(mod&amp;nbsp;C)Aφ(C)≡1(mod&amp;nb...

氧化钠的博客 602

BSGS_及其扩展算法

(Baby Step Giant Step)算法 BSGS存在的目的是求中x的解, BSGS算法要求A与C互质,且C为质数 令,其中m=ceil(),这样原式就变成了,移项化简得到 先循环(共有m项),将存入Hash表中,这个就是Baby Steps 再循环  枚举左边多的部分,从hash表里面寻找是否有相同的,这就是(这就是Giant Step) 找到相同的就是一组答案, 例题  p...

Source_Roc 901

RTOS任务间通信自动化:提升嵌入式开发效率与实时性

任务间通信(IPC)是嵌入式实时操作系统(RTOS)开发中的核心挑战,传统手动消息传递方式存在开发效率低、代码耦合度高和实时性难以保障等问题。通过自动化调用技术,开发者可以像调用本地函数一样实现跨任务通信,显著提升代码可维护性和执行效率。该技术基于执行上下文切换原理,通过编译器生成的多个入口点实现调用路由和参数传递,在汽车电子、工业控制等场景中已实现延迟降低40%、代码量减少35%的优化效果。结合固定大小内存池和优先级感知分配策略,还能有效避免动态内存分配导致的实时性问题,为严格实时系统提供可靠保障。

weixin_30564901的博客 468
上一篇: hdu 4609 (FFT求解三角形)
下一篇: poj 1830 高斯消元
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值