X^Y mod Z = K 给出X、Y、Z,我们都知道如何很快的计算K。但是如果给出X、Z、K,你是否知道如何快速的计算Y呢?

x,z不互质:exBSGS

详见:https://blog.csdn.net/ww140142/article/details/47837521

x,z互质,用exgcd求逆元

关于逆元的几种求法和运用:

https://blog.csdn.net/acdreamers/article/details/8220787(例题)

https://blog.csdn.net/guhaiteng/article/details/52123385

数学题一定要先推清楚式子再写

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
#include<cmath>
using namespace std;typedef long long ll;
ll x,y,z,k,inv;
map <int,int> mp;ll log_(ll x){return (ll)(log(x) / log(2));
}
ll gcd(ll x,ll y){if ( !y ) return x;return gcd(y,x % y);
}
ll power(ll x,int y){ll res = 1;while ( y ){if ( y & 1 ) res = res * x % z;x = x * x % z;y >>= 1;}return res;
}
void exgcd(ll x,ll z,ll &a,ll & b){if ( !z ){a = 1 , b = 0;return;}exgcd(z,x % z,a,b);ll t = a;a = b , b = t - x / z * b;
}
ll getinv(ll x,ll z){ll a,b;exgcd(x,z,a,b);return (a % z + z) % z;
}
int BSGS(ll a,ll b){int sz = (int)sqrt(z) + 1; ll x = b;for (int i = 0 ; i <= sz ; i++){if ( !mp[x] ) mp[x] = i + 1;x = x * inv % z;}if ( mp[1] ) return mp[1] - 1;a = power(a,sz) , x = 1;for (int i = 1 ; i <= z / sz + 1 ; i++){x = x * a % z;if ( mp[x] ) return mp[x] + sz * i - 1;}return -1;
}
int check(){ll cur = x % z;for (int i = 1 ; i <= log_(z) + 1 ; i++){if ( cur == k ) return i - 1;cur = cur * x % z;}int cnt = 0; ll d = gcd(x,z),p = d;while ( d != 1 ){cnt++ , z /= d;d = gcd(x,z) , p = p * d;}if ( k % p != 0 ) return -1;inv = getinv(x,z);k = k * power(inv,cnt) % z;int ans = BSGS(x,k);if ( ans == -1 ) return -1;return ans + cnt;
}
int main(){freopen("input.txt","r",stdin);while ( 1 ){cin>>x>>z>>k;if ( !x && !z && !k ) break;mp.clear();int d = check();if ( d != -1 ) printf("%d\n",d);else printf("No Solution\n");}return 0;
}

bzoj 1467 exBSGS相关推荐

  1. BZOJ 1467 Pku3243 clever Y EXBSGS

    题意:链接 方法: EXBSGS 解析: 这题与BSGS不同的地方就是模数可能不是质数了. 那怎么办呢? 其实也没什么,就是我们不断地分解A和当前的C的最大公约数,注意是当前的C. 假设我们最多分出来 ...

  2. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  3. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  4. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

  5. BZOJ 2957楼房重建

    传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...

  6. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...

  7. bzoj 4871: [Shoi2017]摧毁“树状图”

    4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec  Memory Limit: 512 MB Submit: 53  Solved: 9 [Su ...

  8. BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...

  9. BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x Weblink https://hydro.ac/d/bzoj/p/1590 P ...

  10. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...

最新文章

  1. 燃烧学往年精选真题解析
  2. Python 模块之heapq
  3. php自定义中文分词方法,php实现的中文分词类完整实例
  4. 前端系统化学习【JS篇】:(三)Javascript中的命名规范
  5. 小心!你的脸正在成为色情片主角
  6. 谷歌在线appspot平台教你学Hacker(由浅如深)-XSS篇
  7. 大数阶乘 nyoj28
  8. 两步解决科来数据包生成器找不到网卡的问题
  9. 云服务器的安全设置常识
  10. Kickoff(上路了)
  11. @Param注解的用法
  12. doito-001(余光中)
  13. VC中CList用法
  14. The Shawshank Redemption-4
  15. 【区块链技术开发】剖析区块链Ganache模拟器工具及其智能合约部署区块链的查询方式
  16. 扫雷超详解(可展开一片空白)
  17. 为什么我从iOS返回Android
  18. JS截取URL中最后一个斜杆前(后)的内容
  19. 可视化实验一:大数据可视化工具—Excel
  20. 台式电脑无法修复计算机,台式电脑自动关机开机无法修复怎么办

热门文章

  1. python函数变量教程_Python 函数变量
  2. 抖音作品实时监控采集数据,抖音达人下关键词数据抓取
  3. 题目234 吃土豆
  4. 风清扬环保:分析乳化液破乳剂的实际应用
  5. 给马云、马化腾订制旅行,这家公司想做旅游行业的“得到”
  6. JSP七动作---<jsp:setProperty>
  7. 小熊派 LVGL 移植文件系统
  8. 关于手机-Android版本-基带版本,连续点击六次进入工厂模式。自定义版本点五次动态隐藏显示某应用。
  9. html让图片悬浮在网页,网页制作灰度图片悬浮效果利用HTML5和jQuery实现
  10. 【郝生活】如何下载微博视频(PC)