[poj2417]Discrete Logging_BSGS
Discrete Logging poj-2417
题目大意:求$a^x\equiv b(mod\qquad c)$
注释:O(分块可过)
想法:介绍一种算法BSGS(Baby-Step Giant-Step),网上大佬说拔山盖世qwq
算法是这样的(贼难受,所以手写了)

最后,附上丑陋的代码... ...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
typedef long long ll;
ll a,b,c,m,f[10000000];
map<ll,int> mp;
ll quick_power(ll x)
{
ll sum=1;
ll mid=a;
while(x)
{
if(x&1) sum=sum*mid%c;
x>>=1;
mid=(mid*mid)%c;
}
return sum;
}
int main()
{
mp.clear();
while(scanf("%I64d%I64d%I64d",&c,&a,&b)!=EOF)
{
mp.clear();
if(a%c==0) //判断a,c 是否互质,因为c 是质数,所以直接判断是否整除即可
{
printf("no solution\n");
continue;
}
int p=false;
float akkk=(float)c;
m=ceil(sqrt(akkk));
ll ans=b%c;
mp[ans]=0;
for(int i=1;i<=m;i++)//拔山过程(Baby-Step)
{
ans=(ans*a)%c;
mp[ans]=i;
}
ll t=quick_power(m); ans=1;
for (int i=1;i<=m;i++)//盖世过程(Giant-Step)
{
ans=(ans*t)%c;
if (mp[ans])
{
int t=i*m-mp[ans];
printf("%I64d\n",(t%c+c)%c);
p=true;
break;
}
}
if (!p)
printf("no solution\n");
}
}
小结:可以优化我之前写过的一些东西,感觉挺有用的。
这东西想一想就知道特判贼tm多
[poj2417]Discrete Logging_BSGS的更多相关文章
- POJ2417 Discrete Logging
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- POJ2417 Discrete Logging【BSGS】
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5577 Accepted: 2494 ...
- [POJ2417]Discrete Logging(指数级同余方程)
Discrete Logging Given a prime P, 2 <= P < 2 31, an integer B, 2 <= B < P, and an intege ...
- POJ2417 Discrete Logging【BSGS】(模板题)
<题目链接> 题目大意: P是素数,然后分别给你P,B,N三个数,然你求出满足这个式子的L的最小值 : BL== N (mod P). 解题分析: 这题是bsgs算法的模板题. #incl ...
- poj2417 Discrete Logging BSGS裸题
给a^x == b (mod c)求满足的最小正整数x, 用BSGS求,令m=ceil(sqrt(m)),x=im-j,那么a^(im)=ba^j%p;, 我们先枚举j求出所有的ba^j%p,1< ...
- POJ2417 Discrete Logging | A,C互质的bsgs算法
题目: 给出A,B,C 求最小的x使得Ax=B (mod C) 题解: bsgs算法的模板题 bsgs 全称:Baby-step giant-step 把这种问题的规模降低到了sqrt(n)级别 首 ...
- 【算法】BSGS算法
BSGS算法 BSGS算法用于求解关于x的模方程\(A^x\equiv B\mod P\)(P为质数),相当于求模意义下的对数. 思想: 由费马小定理,\(A^{p-1}\equiv 1\mod P\ ...
- 【poj2417】 Discrete Logging
http://poj.org/problem?id=2417 (题目链接) 题意 求解$${A^X≡B~(mod~P)}$$ Solution BSGS. 细节 map TLE飞,只好写了hash挂链 ...
- Discrete Logging(poj2417)
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5120 Accepted: 2319 ...
随机推荐
- centos6.4 ssh免密码登陆(只需三个步骤)
学习Hadoop的时候,用到的.这里作为记录. 以下是最简洁的方式: 4台虚拟机: 用户:root.hadoop hostname 分别是:Master.Hadoop.Slave1.Hadoop.Sl ...
- [App Store Connect帮助]三、管理 App 和版本(2.5)输入 App 信息:本地化 App Store 信息
在添加 App 至您的帐户之后,您可以在“App 信息”页面添加语言并输入本地化元数据.若要查看受支持的语言列表,请参见 App Store 本地化.若要了解您可以本地化的属性,请参见必填项.可本地化 ...
- 微信小程序连接Java后台
有人问我小程序怎么连后台,这里直接贴代码 在app.js里 // api request request(url, params) { return new Promise((resolve, rej ...
- MySQL索引失效及使用索引的优缺点
本文所有实验基于MySQL5.7.21,实验将会用到Explain工具,不了解的同学可参考此文章:MySQL性能优化神器Explain详解 联合索引失效 先创建一个包含三个字段的联合索引,索引顺序如下 ...
- NS2学习笔记(三)
代理(Agents) 代理是网络层数据包产生和使用的端点,用于实现多层的协议.Agent类部分用OTcl实现,部分用C++实现.C++的代码在~ns/agent.cc和~ns/agent.h中,OTc ...
- 开始玩qt,使用代码修改设计模式生成的菜单
之前制作菜单时,不是纯代码便是用设计模式 直接图形化完成. 今天我就是想用代码修改已经存在的菜单项,如果是用代码生成的可以直接调用指针完成: 但通过设计模式完成的没有暴露指针给我,至少我没发现. 在几 ...
- sql server 无法创建数据库,错误代码:1807
SQL Server 不能创建数据库,发生错误:1807 :未能获得数据库 'model' 上的排它锁.请稍后重试操作. declare @sql varchar(100) while ...
- js基础---object对象
//**********************************复杂JSON举例**************************************** var Jsondata={d ...
- Ch03 React/JSX/Component 簡介
Facebook 本身有提供 Test Utilities,但由于不够好用,所以目前主流开发社群比较倾向使用 Airbnb 团队开发的 enzyme,其可以与市面上常见的测试工具(Mocha.Karm ...
- SV creation order
SystemVerilog Instance Worlds When generating an UVM testbench and in particular the DUT - testbench ...