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的更多相关文章

  1. POJ2417 Discrete Logging

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  2. POJ2417 Discrete Logging【BSGS】

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5577   Accepted: 2494 ...

  3. [POJ2417]Discrete Logging(指数级同余方程)

    Discrete Logging Given a prime P, 2 <= P < 2 31, an integer B, 2 <= B < P, and an intege ...

  4. POJ2417 Discrete Logging【BSGS】(模板题)

    <题目链接> 题目大意: P是素数,然后分别给你P,B,N三个数,然你求出满足这个式子的L的最小值 : BL== N (mod P). 解题分析: 这题是bsgs算法的模板题. #incl ...

  5. 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< ...

  6. POJ2417 Discrete Logging | A,C互质的bsgs算法

    题目: 给出A,B,C 求最小的x使得Ax=B  (mod C) 题解: bsgs算法的模板题 bsgs 全称:Baby-step giant-step 把这种问题的规模降低到了sqrt(n)级别 首 ...

  7. 【算法】BSGS算法

    BSGS算法 BSGS算法用于求解关于x的模方程\(A^x\equiv B\mod P\)(P为质数),相当于求模意义下的对数. 思想: 由费马小定理,\(A^{p-1}\equiv 1\mod P\ ...

  8. 【poj2417】 Discrete Logging

    http://poj.org/problem?id=2417 (题目链接) 题意 求解$${A^X≡B~(mod~P)}$$ Solution BSGS. 细节 map TLE飞,只好写了hash挂链 ...

  9. Discrete Logging(poj2417)

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5120   Accepted: 2319 ...

随机推荐

  1. J20170618-hm

    番兵(ばんぺい) 哨兵 後始末 善后  

  2. codevs3287货车运输(最小生成树+LCA)

    3287 货车运输 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description A 国有 ...

  3. jQuery里$.post请求,后台返回结果为“json”格式,前台解析错误问题记录

    在JSP页面使用$.post请求后台返回json数据时,在最后 必须加上返回数据格式为json的才行.不然JSP页面解析会出错.

  4. Croppic插件使用介绍-asp.net

    具体的参数使用和基本使用方式请看:http://www.uedsc.com/croppic-api.html 需要说明的几点: 1.支持两种上传方式: (1)先将原图上传至服务器,然后再次将切图信息传 ...

  5. Android RecyclerView遇到notifyDataSetChanged无效时的解决方案

    一.简述 不管AbsListView(ListView.GridView)或是新出的RecyclerView,在使用notifyDataSetChanged方法更新列表数据时,一定要保证数据为同个对象 ...

  6. 背包系列 hdu3449 有依赖背包

    这道题真正困扰了笔者3,4天,冥思苦想几日无果之后,只能去找大牛的解法.结合网上的大牛解法与自己的理解,笔者终于解决了这个坑了,在此小庆幸一下. 原题如下: Consumer Time Limit: ...

  7. CommandBehavior.CloseConnection使用

    其用在ExecuteReader(c)中,返回对象前不能关闭数据库连接,须用CommandBehavior.CloseConnection: 这是一个关于实际知识点的问题,面试官考查的是应聘者数据库访 ...

  8. 【PL/SQL】九九乘法口诀表

    --输出屏幕信息 SET serveroutput ON; --打印口诀表 DECLARE V_NUMBER1 ); --外层循环变量 V_NUMBER2 ); --内层循环变量 BEGIN .. - ...

  9. 11、scala函数式编程

    1.将函数赋值给变量 2.匿名函数 3.高阶函数 4.高阶函数的类型推断 5.Scala的常用高级函数 6.闭包 7.SAM转换 8.Currying函数 9.return 1.将函数赋值给变量 Sc ...

  10. ZfNet解卷积:可视化CNN模型( PythonCode可视化Cifar10)

    原文链接:caffe Model的可视化 snapshot: 6000       一个在线可视化小工具:http://blog.csdn.net/10km/article/details/52713 ...