#include #include #include #include using namespace std;const int MaxM=11;int a[MaxM],b[MaxM];void exgcd(int a,int b,int &d,int &x,int &y){ if(b==0){ ...
分类:
其他好文 时间:
2014-08-29 21:16:08
阅读次数:
227
线性同余方程组,模板了。但要注意读完数据才跳出循环啊#include #include #include #include using namespace std;void exgcd(__int64 a,__int64 b,__int64 &d,__int64 &xx,__int64 &yy){ ...
分类:
其他好文 时间:
2014-08-29 17:37:38
阅读次数:
162
胡乱写一下,竟然是一次同余方程的内容。设a=n-m; b=L; d=x-y; 得ax+by=d然后,根定理,方程有解必须gcd(a,b)|d。确定有解后,两边除以gcd(a,b); 此时gcd(a',b')=1;使用EXGCD求出为1的解后再乘上d/gcd(a,b)。但要求最小解,就尽可能的把ax的...
分类:
其他好文 时间:
2014-08-27 16:05:17
阅读次数:
163
描述求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解。格式输入格式输入只有一行,包含两个正整数a, b,用一个空格隔开。输出格式输出只有一行,包含一个正整数x0,即最小正整数解。输入数据保证一定有解。样例1样例输入1[复制]3 10样例输出1[复制]7限制每个测试点1s提示对于40%的数...
分类:
其他好文 时间:
2014-08-25 21:05:34
阅读次数:
231
以下是总结自他人博客资料,以及本人自己的学习经验。
【Baby_Step,Gaint_Step定义】
高次同余方程。 BL == N (mod
P)
求解最小的L。由于数据范围很大,暴力不行
这里用到baby_step,giant_step算法。意为先小步,后大步。
令L=i*m+j (m=ceil(sqrt(p-1))),
那么原式化为 B^(i*m)*B^j=...
分类:
其他好文 时间:
2014-08-12 13:48:24
阅读次数:
222
以前觉得用中国剩余定理来求同余方程组很鸡肋,因为可以用拓展欧几里得算法来构造出一种更加强大(可以处理取模的数(默认为mi)不互质的情况)的算法。今天查了点资料,发现我太天真了。首先讲讲中国剩余定理:即 : x ≡a[i] (mod m[i]) 1= 1,所以很多地方一个数你可以拆成多个不同的素数的积...
分类:
其他好文 时间:
2014-08-09 23:03:19
阅读次数:
254
扩展欧几里得算法及其应用
一、扩展欧几里得算法
扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,若gcd(a,b)表示 a,b 的最大公约数,必然存在整数对x,y ,使得 ax+by = gcd(a,b)。
算法过程:
设 a>b,当 b=0时,gcd(a,b)=a。此时满足ax+by = gcd(a,b)的一组整数解为x=1,y=0;当a*b!=0 时,
设 a*x1+b*...
分类:
其他好文 时间:
2014-08-08 18:14:06
阅读次数:
341
1.求gcd,算法为欧几里德(辗转相除法)2.解一元二次方程,算法为扩展欧几里德3.求素数,算法为埃氏筛法4.快速进行幂运算,算法快速幂(反复平方)5.解线性同余方程,求逆元(基于exgcd)6.其它用来优化模运算的定理,欧拉定理(费马小定理),相应的函数欧拉函数
分类:
其他好文 时间:
2014-08-07 12:49:39
阅读次数:
239
#includeint extended_gcd(int a,int b,int &x,int &y){ int r,t; if(!b) { x = 1; y = 0; return a; } r = extended_gcd(...
分类:
其他好文 时间:
2014-08-06 11:44:11
阅读次数:
268
求fibonacci数列前N个数的K次方和。通项公式:F[n]=((1+sqrt(5))/sqrt(5)-(1-sqrt(5))/sqrt(5))/sqrt(5)。有点乱,不过由于可以保证最后的结果是一个整数,所有所有的根号都可以化为整数进行取模和逆元运算。首先解二次同余方程,X^2=n (mod ...
分类:
其他好文 时间:
2014-08-02 15:19:53
阅读次数:
294