POJ 3243 Clever Y 扩展BSGS】的更多相关文章

http://poj.org/problem?id=3243 这道题的输入数据输入后需要将a和b都%p https://blog.csdn.net/zzkksunboy/article/details/73162229 在大约sqrt( p )的复杂度求出 ( a^x ) % p = b % p中的x 扩展bsgs增加了对p不是素数的情况的处理. 扩展bsgs在处理过a,b,p之后进行bsgs的时候x处理不到num以下的部分,这部分在处理a,b,p的时候处理过了(b=1输出num)所以不用考虑.…
扩展BSGS的板子 对于gcd(a,p)>1的情况 即扩展BSGS 把式子变成等式的形式: \( a^x+yp=b \) 设 \( g=gcd(a,p) \) 那么两边同时除以g就会变成: \( \frac{a}{g} a^{x-1}+y\frac{p}{g}=\frac{b}{g} \) 如此循环到ap互质,然后正常BSGS求即可 最后答案加上循环次数,即当前的x是经过几次减一得到的 注意有很多关于0和1的特判 以及这道题在bzoj上是可以用map的,但是poj上只能用hash map版: #…
Clever Y Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 8666   Accepted: 2155 Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, give…
1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 小Y发现,数学中有一个很有趣的式子: X^Y mod Z = K 给出X.Y.Z,我们都知道如何很快的计算K.但是如果给出X.Z.K,你是否知道如何快速的计算Y呢? Input 本题由多组数据(不超过20组),每组测试数据包含一行三个整数X.Z.K(0 <= X, Z, K <= 109). 输入文…
不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostream> #include <stdio.h> #include <math.h> #include <string.h> #define SIZE 99991 /* POJ 3243 AC 求解同余方程: A^x=B(mod C) */ using namespace…
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, given X, Z, K, could you figure out Y fast? Input Input data consists of no more than 20 test ca…
题目: 给你A,B,K 求最小的x满足Ax=B (mod K) 题解: 如果A,C互质请参考上一篇博客 将 Ax≡B(mod C) 看作是Ax+Cy=B方便叙述与处理. 我们将方程一直除去A,C的最大公约数进行变形,最终使得A和C互质. 将方程同除d1=gcd(A,C),得到B1=A/d1*Ax-1+C1y.有可能A和C1不互素,因此继续将方程同除d2=gcd(A,C1)得到B2=A2/d1d2*Ai-2+C2y.一直这样下去知道A和Ci互素.这里也能看出,若Bi不被gcd(A,Ci)整除则无解…
题目大意:给定A,B,C,求最小的非负整数x,使A^x==B(%C) 传说中的EXBSGS算法0.0 卡了一天没看懂 最后硬扒各大神犇的代码才略微弄懂点0.0 參考资料: http://quartergeek.com/bsgs/ http://hi.baidu.com/aekdycoin/item/236937318413c680c2cf29d4 这两位写的比較具体0.0 能够用于參考 对拍时发现自己代码各种脑残0.0 伤不起啊 #include<cmath> #include<cstd…
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, given X, Z, K, could you figure out Y fast? Input Input data consists of no more than 20 test ca…
1 Accepted 8508K 579MS C++ 2237B/** hash的强大,,还是高次方程,不过要求n不一定是素数 **/ #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> using namespace std; long long a,b,n; ; bool Hash[maxn]; long…
调了一周,我真制杖,,, 各种初始化没有设为1,,,我当时到底在想什么??? 拓展BSGS,这是zky学长讲课的课件截屏: 是不是简单易懂.PS:聪哥说“拓展BSGS是偏题,省选不会考,信我没错”,那是因为聪哥早就会了,所以他觉得学这个没用,信他才怪233 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef lo…
http://poj.org/problem?id=3243 题意:求$a^y \equiv b \pmod{p}$最小的$y$.(0<=x, y, p<=10^9) #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <iostream> typedef long long ll; using namespace st…
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, given X, Z, K, could you figure out Y fast? Input Input data consists of no more than 20 test ca…
题目链接 Clever - Y 题意 有同余方程 \(X^Y \equiv K\ (mod\ Z)\),给定\(X\),\(Z\),\(K\),求\(Y\). 解法 如题,是拓展 \(Bsgs\) 板子,部分学习内容在这里 \((Click\ here)\). 敲完板子就能获得至少 5 倍经验. 过程中疯狂 \(WA\) 所以总结需要注意的几点-- · 令 \(m = sqrt(p) + 1\) 比较保险,不然有的时候会枚举不到 · 在令 \(a\),\(p\) 互质的循环中,\(b = d\)…
BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. 由于费马小定理 \(x^{p-1} \equiv 1 \pmod p\) 当 \(p\) 为质数,则要是暴力的话只需要枚举到 \(p-1\) 即可. 假设 \(x=it-j\),其中 \(t= \lceil \sqrt p \rceil,j \in [0,t]\),方程变为 \(a^{it-j}…
1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 313  Solved: 181[Submit][Status][Discuss] Description 小Y发现,数学中有一个很有趣的式子: X^Y mod Z = K 给出X.Y.Z,我们都知道如何很快的计算K.但是如果给出X.Z.K,你是否知道如何快速的计算Y呢? Input 本题由多组数据(不超过20组),每组测试数据包含一行三个整数X.Z.K(0…
BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\((A,P)=1\),即\(A\)与\(P\)互质 前置知识 根据欧拉定理\(A^{ \varphi(p)} \equiv1(mod\ p)\),所以\(A^x(mod\ p)\)的循环节为\(\varphi(p)\).也就是说如果上面的方程有解\(x\),那么肯定有\(x \in [0,\varphi…
A^x = B (mod C) 的模板题,不够要用扩展BSGS (虽然AC,但完全理解不了模板0.0,以后学好数学在来慢慢理解555555) #include <iostream> #include <cstdio> #include <ctime> #include <cmath> + ; ; const int INF = 0x7fffffff; using namespace std; typedef long long ll; struct Hash…
T2  扩展BSGS T3 快速阶乘 给定整数n,质数p和正整数c,求整数s和b,满足n! / pb = s mod pc 考虑每次取出floor(n/p)个p因子,然后将问题转化为子问题. /************************************************************** Problem: 3283 User: idy002 Language: C++ Result: Accepted Time:1704 ms Memory:12380 kb ***…
[BZOJ1467/2480]Pku3243 clever Y/Spoj3105 Mod Description 已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x. Input     每个测试文件中最多包含100组测试数据.     每组数据中,每行包含3个正整数a,p,b.     当a=p=b=0时,表示测试数据读入完全. Output     对于每组数据,输出一行.     如果无解,输出“No Solution”(不含引号),否则输出最小自然数解. Sample Inp…
扩展BSGS用于求解axΞb mod(n) 同余方程中gcd(a,n)≠1的情况 基本思路,将原方程转化为a与n互质的情况后再套用普通的BSGS求解即可 const int maxint=((1<<30)-1)*2+1; struct Hashmap{     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];  …
BSGS 给定\(a,b,p\),求\(x\)使得\(a^x\equiv b \pmod p\),或者说明不存在\(x\) 只能求\(\gcd(a,p)=1\)的情况 有一个结论:如果有解则必然存在\(x\in\left\{0\ldots p-1\right\}\)的解 设\(q=\lceil\sqrt p\rceil,x=cq-d\) \[a^{cq-d}\equiv b\pmod p\] \[a^{cq}\equiv b\times a^d\pmod p\] 先枚举\(d\in\left\{…
BSGS: 求合法的\(x\)使得\(a ^ x \quad mod \quad p = b\) 先暴力预处理出\(a^0,a^1,a^2.....a^{\sqrt{p}}\) 然后把这些都存在map里 : \(map[a^x] = x\) 一个合法的x满足\(x = k\sqrt{p} + l\)使得\(a^x = b\),因此可以直接枚举k,于是有: \[a^x = a^{k\sqrt{p}} \cdot a^l = b\] \[a^l = \frac{b}{a^{k\sqrt{p}}} =…
1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 425  Solved: 238[Submit][Status][Discuss] Description 小Y发现,数学中有一个很有趣的式子: X^Y mod Z = K 给出X.Y.Z,我们都知道如何很快的计算K.但是如果给出X.Z.K,你是否知道如何快速的计算Y呢? Input 本题由多组数据(不超过20组),每组测试数据包含一行三个整数X.Z.K(0…
每次把gcd(a,c)提到前面,直到a,c互质,然后就是普通BSGS了 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #define LL long long using namespace std; struct hashtable{ static const int N=577399; int tot,hash…
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, given X, Z, K, could you figure out Y fast? Input Input data consists of no more than 20 test ca…
http://poj.org/problem?id=3243 求最小的非负整数y满足x^y=k(mod z) 写完板子之后等待了半个小时poj才终于进入…… poj不行啊.jpg 以前一直觉得BSGS太神啦于是就跳了. 结果回头一看发现异常的简单. (老年化初步体现flag*1) 首先x^y对k取模随着y的变化有周期性,最大周期不超过k(感性证明吧) 那么最小的y一定是在[0,k)之间了. 我们把这段区间分块,大小为n=sqrt(k),令m=k/n,则y=i*m-a,把y^a预处理移项到右面,h…
蒟蒻哪里有什么总结,只能点击%YL% 还有这位ZigZagK大佬的blog \(\mbox{BSGS}\) 模板题:洛谷P3846 [TJOI2007]可爱的质数 给定\(a,b\)和模数\(\mbox{YL}\),求\(a^x\equiv b(\bmod\mbox{YL})\)中\(x\)的最小非负整数解.保证\(\gcd(a,\mbox{YL})=1\). 设\(k=\lceil\sqrt{\mbox{YL}}\rceil\),令\(x=ky-c\)(\(y\in[1,k],c\in[0,k…
辗转相除法(欧几里得算法) 时间复杂度:在O(logmax(a, b))以内 int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } 扩展欧几里得算法 时间复杂度和欧几里得算法相同 int extgcd(int a, int b, int& x, int& y) { int d = a; if (b != 0) { d = extgcd(b, a % b, y, x); y -= (a / b) * x;…
题目地址:POJ 2115 水题. . 公式非常好推.最直接的公式就是a+n*c==b+m*2^k.然后能够变形为模线性方程的样子,就是 n*c+m*2^k==b-a.即求n*c==(b-a)mod(2^k)的最小解.(真搞不懂为什么训练的时候好多人把青蛙的约会都给做出来了,这题却一直做不出来.. . . . 这两道不都是推公式然后变形吗. .... ) 代码例如以下: #include <iostream> #include <cstdio> #include <strin…