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 阅读详情

相关推荐

【2023版】基于JT808/JT1078协议的车载视频监控平台开发实战-开源架构解析

本文详细解析了基于JT808/JT1078协议的车载视频监控平台开发实战,涵盖协议核心作用、开源架构设计、开发避坑指南及二次开发建议。重点介绍了JT1078协议在音视频传输中的优化方案,以及海量位置数据存储、高可用架构等关键技术点,为开发者提供全面的实战参考。

weixin_26965807的博客 234

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

DVWA全级别详细通关教程

dvwa全级别详细通关教程,暴力破解,命令注入,CSRF跨站请求伪造,文件包含,文件上传​,SQL注入,XSS

m0_62063669的博客 1万+

【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

WinForm轻松打造AntDesign现代化工具栏

摘要: 本文介绍如何在WinForm中利用AntdUI库实现AntDesign风格工具栏,包括安装配置、动态生成按钮/下拉菜单、布局优化及主题美化。通过AntButton、AntDropdown等控件结合事件绑定,可快速构建支持图标、工具提示、权限控制的现代化工具栏,并解决常见图标加载、布局错乱问题。最后提供代码示例与响应式设计技巧,助你打造高效美观的WinForm界面。 (字数:150)

java专栏 1590

uniapp无感刷新token实现过程

可以看到已经触发了刷新token接口,并且重新请求上次失败的列表接口,无感刷新token逻辑已经正常,但为什么列表接口请求成功,还一直loading没关闭捏,就是因为后续代码未执行,await接口的返回没有成功resolve。路漫漫其修远兮,前端道路逐渐迷茫,时隔好久好久终于想起了我还有一个小博客,最近在一直在弄uniapp,属实有被恶心到,但也至少会用了,最近实现了一个比较通用的功能,就是无感刷新token,但在过程中发现一个问题就是。3、排查await的列表接口为何没有成功resolve。

weixin_40618068的博客 3594

【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

寒武纪面试——数字IC,数字逻辑岗

面试过程:面试是电话面试,通话时间大致在40分钟左右!面试体验挺不错的。面试的岗位是数字逻辑工程师。本人双非,拿过一个国一(南京FPGA大赛),一个数学建模省二。

FPGA/MATLAB学习教程/源码/项目合作开发 1374

Baby Step Giant Step

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

ZZ 737

GibbsCAM软件二次开发:GibbsCAM软件API接口详解

API(Application Programming Interface,应用程序编程接口)是一种允许不同软件之间进行通信的接口。在GibbsCAM软件中,API提供了与外部程序交互的能力,使得开发者可以利用GibbsCAM的强大功能进行二次开发,定制化满足特定的制造需求。GibbsCAM的API主要基于.NET框架,使用C#或VB.NET等语言进行编程。在GibbsCAM软件中,通过API接口创建自定义几何形状是实现复杂零件设计和加工策略定制的关键步骤。

kkchenjj的博客 1495

RK3588上使用PCIE接口的国产千兆网卡YT6801

YT6801是裕太微电子开发的一款国产千兆PCIE以太网控制器芯片,可作为RK3588的PCIE外扩网口使用。

荻夜的博客 8202

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

WPF在特定领域的应用:打造一款专业的图像编辑工具

WPF在特定领域的应用:打造一款专业的图像编辑工具,在软件开发的广阔领域中,Windows Presentation Foundation(WPF)以其强大的图形渲染能力和丰富的用户界面控件,为开发者提供了构建高性能、美观应用程序的平台。图像编辑工具作为一种对图形处理要求极高的应用类型,WPF 的特性使其成为理想的选择。本文将深入探讨如何使用 WPF 打造一款专业的图像编辑工具,涵盖从基础概念到实际代码实现的各个方面。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

高次同余方程: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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pscad IEEE标准系统搭建说明

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

【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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

高次同余方程

详解 下面的模板中是,调用函数时是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、付费专栏及课程。

余额充值