题目大意:求方程xk≡a(mod p)x^k≡a(mod\ p)在[0,p)[0,p)区间内的全部解
取pp的一个原根gg,两侧取指标得到:
k?indgx≡indga(mod p?1)k*ind_gx≡ind_ga(mod\ p-1)
上EXGCD即可
注意a=0a=0要特判
(EXGCD已死系列……#include
#include
#include...
分类:
其他好文 时间:
2015-04-11 18:01:57
阅读次数:
142
#includeusing namespace std;long long exgcd( long long a, long long b, long long &x, long long &y ){ if( b == 0 ) { x = 1; y = 0; ...
分类:
其他好文 时间:
2015-04-03 22:24:24
阅读次数:
216
---恢复内容开始---今天江哥来个给我们讲一些数学方面的小知识...小小总结一下!1. exgcd(). 1 inline ll exgcd(ll a,ll b,ll c){2 return c % a ? (exgcd(b % a, a, ((-c % a) + a) % a) * b...
分类:
其他好文 时间:
2015-02-01 23:15:39
阅读次数:
280
//返回d=gcd(a,b);和对应于等式ax+by=d中的x,ylong long extend_gcd(long long a,long long b,long long &x,long long &y){ if(a==0&&b==0) return -1;//无最大公约数 if(b...
分类:
其他好文 时间:
2014-12-21 23:29:11
阅读次数:
430
/* Author: wsnpyo Update Date: 2014-11-16 Algorithm: 快速幂/Fermat, Solovay_Stassen, Miller-Rabin素性检验/Exgcd非递归版/中国剩余定理*/import randomdef QuickPo...
分类:
编程语言 时间:
2014-11-16 15:59:16
阅读次数:
278
扩展欧几里得,给两个点,就可以求出直线方程为 (yy-y)*x0 + (x-xx)*y0 =x*yy - y*xx,求的是在线段上的整点个数。所以就是(yy-y)*10*x0 + (x-xx)*10*y0 = x*yy - y*xx满足条件的解的个数。用exgcd搞之后求出一个解,再求出在线段上第一...
分类:
其他好文 时间:
2014-10-21 02:15:40
阅读次数:
197
//1Y真是爽啊 题意:要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。分析:根据题意a=b*x a=m*y+n 得b*x-m*y=n;根据exgcd求得一组解x,y#include "stdio....
分类:
其他好文 时间:
2014-10-17 18:24:32
阅读次数:
175
HDU 1576 A/B(扩展欧几里德变形)...
分类:
其他好文 时间:
2014-10-05 12:48:08
阅读次数:
179
ZOJ 3609 Modular Inverse(扩展欧几里德)...
分类:
其他好文 时间:
2014-10-04 12:29:36
阅读次数:
197
https://vijos.org/p/1781学习了下拓欧。。求exgcd时,因为a*x1+b*y1=a*x2+b*y2=b*x2+(a-b*[a/b])*y2然后移项得a*x1+b*y1=b*x2+a*y2-(b*[a/b])*y2a*(x1-y2)+b*y1-b*x2+(b*[a/b]*y2)...
分类:
其他好文 时间:
2014-10-03 14:03:54
阅读次数:
235