就是求Ax三B(mod C)当C为素数时

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
const int MAXINT = ((1 << 30) - 1) * 2 + 1;int A, B, C;
struct Hashmap //哈希表代替map
{static const int Ha = 999917, maxe = 46340;int E, lnk[Ha], son[maxe + 5], nxt[maxe + 5], w[maxe + 5];int top, stk[maxe + 5];void clear() { E = 0; while (top) lnk[stk[top--]] = 0; }void Add(int x, int y) { son[++E] = y; nxt[E] = lnk[x]; w[E] = MAXINT; lnk[x] = E; }bool count(int y){int x = y%Ha;for (int j = lnk[x]; j; j = nxt[j])if (y == son[j]) return true;return false;}int& operator [] (int y){int x = y%Ha;for (int j = lnk[x]; j; j = nxt[j])if (y == son[j]) return w[j];Add(x, y); stk[++top] = x; return w[E];}
};
Hashmap f;int exgcd(int a, int b, int &x, int &y)
{if (!b) { x = 1; y = 0; return a; }int r = exgcd(b, a%b, x, y), t = x; x = y; y = t - a / b*y;return r;
}
int BSGS(int A, int B, int C)
{if (C == 1) if (!B) return A != 1; else return -1;if (B == 1) if (A) return 0; else return -1;if (A%C == 0) if (!B) return 1; else return -1; //几种特判int m = ceil(sqrt(C)), D = 1, Base = 1; f.clear();for (int i = 0; i <= m - 1; i++) //先把A^j存进哈希表
    {f[Base] = min(f[Base], i);Base = ((LL)Base*A) % C;}for (int i = 0; i <= m - 1; i++){int x, y, r = exgcd(D, C, x, y);x = ((LL)x*B%C + C) % C; //扩欧求A^jif (f.count(x)) return i*m + f[x]; //找到了D = ((LL)D*Base) % C;}return -1;
}
int main()
{while (~scanf("%d%d%d", &C, &A, &B)){int ans = BSGS(A, B, C);if (ans == -1) printf("no solution\n"); elseprintf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/ALINGMAOMAO/p/9997985.html

Discrete Logging ZOJ - 1898 (模板题大小步算法)相关推荐

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

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

  2. POj 3164 Command Network最小树形图 模板题 朱刘算法

    Command Network After a long lasting war on words, a war on arms finally breaks out between littleke ...

  3. POJ3164 最小树形图 有向图的最小生成树 模板题 朱刘算法 朱永津-刘振宏算法

    Command Network Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 12833   Accepted: 3717 ...

  4. Discrete Logging hunnu10590 pku2417 fzu 1352 hit 1928 zoj 1898

    以下转自:http://hi.baidu.com/aekdycoin/blog/item/b317ca18bb24334942a9ad55.html [普通Baby Step Giant Step] ...

  5. hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)

    题目链接:https://vjudge.net/problem/HDU-2191 悼念512汶川大地震遇难同胞--珍惜现在,感恩生活                                   ...

  6. kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)

    kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题) 总题单 week 3 [kuangbin带你飞] 题单 最小生成树 + 线段树 Cli ...

  7. luogu P4726 多项式指数函数(模板题FFT、多项式求逆、多项式对数函数)

    luogu P4726 多项式指数函数(模板题FFT.多项式求逆.多项式对数函数) 手动博客搬家: 本文发表于20181127 08:39:42, 原地址https://blog.csdn.net/s ...

  8. HDU 1814 Peaceful Commission / HIT 1917 Peaceful Commission /CJOJ 1288 和平委员会(2-sat模板题)...

    HDU 1814 Peaceful Commission / HIT 1917 Peaceful Commission /CJOJ 1288 和平委员会(2-sat模板题) Description T ...

  9. P2163 [SHOI2007]园丁的烦恼(二维数点模板题)

    P2163 [SHOI2007]园丁的烦恼 题意: 在一个二维平面内有一些点,给你一个左上角和右下角的点,问这个范围内有多少点 题解: 二维数点模板题 我们设F(a,b)表示以(0,0)为左下角,(a ...

最新文章

  1. android RecycleView padding 和高度一样会出现什么情况?
  2. boost::signals2模块实现为类定义预析构函数的最小示例的测试程序
  3. matlab中nc文件,MATLAB读取.nc文件
  4. dedecms右侧悬浮_织梦dedecms网站上添加漂浮广告
  5. 阿里如何实现100%容器化镜像化?八年技术演进之路回顾(转)
  6. 【算法笔记】B1058 选择题
  7. 开了立体声混音仍然不能内录_蓝牙音箱有个功能很鸡肋,用好了秒变HIFI立体声...
  8. Android之WindowManager+OpenGL+EGL绘制(十七)
  9. 计算机存储系统中,有哪些措施可以提高 CPU 访问存储系统的速度?
  10. Java基础之访问文件与目录——获取与文件存储有关的信息(GetFileStores)
  11. Java常用的设计模式
  12. 计算机财务模型管理实验内容,计算机财务管理实验报告详细分解.doc
  13. php 公众号多图文消息,微信公众号怎样群发多图文消息?
  14. pyodbc mysql_pyodbc and mySQL
  15. Linux服务器集群系统LVS(一)
  16. pinia报错, getActivePinia was called with no active Pinia. Did you forget to install pinia?
  17. mysql双主架构沈剑_58 沈剑 - 数据库架构师做什么-58同城数据库架构设计思路
  18. XSS之xss-labs-level17
  19. SpringBoot @Conditional系列注解
  20. Cisco路由器上配置3A认证的故障调试

热门文章

  1. linux根目录cdef,关于linux:Cython:从python调用的cdef函数中调用扩展类型cdef方法...
  2. weblogic进程自动关闭_手机内存不够还卡顿,那是你不会清理,关闭这3个设置就变流畅...
  3. python程序中结束while循环的两种方法是_Python中while循环
  4. Ajax请求中async属性
  5. 最新酷睿计算机配置,三款intel九代酷睿全系列组装电脑配置推荐 每一款CPU都支持超频...
  6. 学计算机要6选3选什么学科,新高考选科6选3的学科及专业对应表查询系统
  7. 中断linux命令快捷键_基于Linux终端命令行的快捷键的详细解析
  8. svpwm矢量控制电机相电压波形_SVPWM调制中的6个非零基础电压矢量的幅值到底是Udc还是2/3Udc ? 电压利用率为什么是1?...
  9. windows 配置 Gitlab、Gitee(码云) 的git开发环境
  10. html5坦克游戏ppt说明,HTML5制作的坦克游戏