2012年3月19日

Poj 2417 baby-step 素数

摘要: 解方程 a^x=b(mod c) c为素数,用算法babystep,水过的,4s多#include <iostream>#include <stdio.h>#include <cmath>using namespace std;typedef long long ll;const ll maxn=65535;struct Hashh{ll a,b,next;}Hash[maxn<<1];ll flag[maxn+100];//注意要赋初值0ll top,idx;//注意要赋初值maxnvoid ins(ll a,ll b){ll k=b& 阅读全文

posted @ 2012-03-19 19:46 Inpeace7 阅读(426) 评论(0) 推荐(0) 编辑

2012年3月17日

算法导论-----数论-----一般离散对数问题

摘要: 一般离散对数问题(GDLP)(摘自天津大学PPT) 1.一般离散对数问题(GDLP):给定一个n阶的有限循环群G和它的一个原根,以及元素b,求一个整数x(0≤x≤n-1),使得ax=b(modn) 2.Baby-step Giant-step,令m=(p-1)1/2,如果b=ax,那么可以把x重写为x=i*m+j,其中0 ≤ i, j < m,于是b=ai*m * aj,两边同除得b(a-m)i=aj,然后可以通过下面的算法来计算x 3.例:令p=113,a=3,b=57执行算法: m=11计算出的二元组排好序为:j 0 1 8 2 5 9 3 7 6 10 43j(mod 113) 1 阅读全文

posted @ 2012-03-17 15:50 Inpeace7 阅读(571) 评论(0) 推荐(0) 编辑

算法导论-----数论-----计算x^2=1(mod n) 在区间[1,n-1]的解

摘要: 计算=1(modn)在区间[1,n-1]的解1.n=,p为奇素数 因为,所以必有原根,设n=,=(modn),)==0(modφ(n)) φ(n)=(p-1),gcd(2,)=2,d=2,且0|2,有两个解,1,n-1. 2.n= -1=0(mod) ,|(x+1)(x-1),因为x为奇数,所以(x-1)(x+1)为相邻偶数所以一个能被2整除,一个能被4整除,能被4整除的那个必能被整除(1) k>2解:x=±1(mod)和x=(±1)(mod)(2) k=2解:x=1,3(3) k=1解:x=13. (e1,e2,…,er>0)那么x2=1(mod n)中国剩余 阅读全文

posted @ 2012-03-17 15:44 Inpeace7 阅读(1984) 评论(0) 推荐(0) 编辑

Poj 2447 RSA

摘要: RSA解密http://www.cnblogs.com/inpeace7/archive/2012/03/17/2403076.html#include <stdio.h>#include <iostream>#include <stdlib.h>#include <time.h>#include <cmath>#include <algorithm>using namespace std;typedef long long ll;ll prfactor;ll gcd(ll a,ll b){if(b==0) return 阅读全文

posted @ 2012-03-17 13:03 Inpeace7 阅读(227) 评论(0) 推荐(0) 编辑

算法导论-----数论-----RSA公钥加密系统

摘要: RSA 公钥加密系统 1.Alice :PA ,SA ;Bob PB,SB(P公钥,S密钥)2.任何消息M 属于DM=SA(PA(M)); M=PA(SA(M)); 3.发送消息方案:Bob取得Alice 公钥PA (2)Bob 计算出M密文C=PA(M),把C发送给Alice(3)Alice收到密文后用SA恢复出原始信息M=SA(C);4. 数字签名(1)Alice用SA计算出M`的数字签名σ=SA(M`)(2)把(M`,σ)发给Bob(3)Bob利用PA验证等式M`=PA(σ);5. RSA加密(1)随机取两个大素数p,q(2)n=pq(3)φ(n)=(p-1)(q-1),取与φ(n)互质 阅读全文

posted @ 2012-03-17 12:38 Inpeace7 阅读(400) 评论(0) 推荐(0) 编辑

Poj 2891 中国剩余定理 非互素

摘要: Poj 2891中国剩余定理,非互素x=a1(mod n1)x=a2(mod n2)n1与n2不互素。x=n1k1+a1x=n2k2+a2n1k1=n2k2+a2-a1n1k1=a2-a1(mod n2)若k1有解,则gcd(n1,n2)|(a2-a1)设d=gcd(n2,n1)即 n1k1/d=(a2-a1)/d(mod n2/d)k1=(a2-a1)/d*(mod n2/d)设k1=(a2-a... 阅读全文

posted @ 2012-03-17 12:27 Inpeace7 阅读(485) 评论(0) 推荐(0) 编辑

2012年3月15日

Poj 1006

摘要: 中国剩余定理简单应用#include <iostream>#include <stdio.h>using namespace std;int b[3],w[3];//a=b[i](%w[i]);int exgcd(int a,int b,int &x,int &y){ if(0==b){x=1;y=0;return a;} int d=exgcd(b,a%b,x,y); in... 阅读全文

posted @ 2012-03-15 20:41 Inpeace7 阅读(121) 评论(0) 推荐(0) 编辑

算法导论-----数论-----中国余数定理

摘要: 1. 定理。n=n1n2…nk,且ni间两两互质,a<---->(a1,a2,…,ak),a属于,ai属于,且i=1,2…kai=amodni。若 a<----->(a1,a2,…,ak) b<----->(b1,b2,…bk)那么a+b<----->((a1+b1)modn1,(a2+b2)modn2,…,(ak+bk)modnk)a-b<----->((a1-b1)modn1,(a2-b2)modn2,…,(ak-bk)modnk)ab<----->((a1b1)modn1,(a2b2)modn2,…,(akbk)mo 阅读全文

posted @ 2012-03-15 19:16 Inpeace7 阅读(767) 评论(0) 推荐(0) 编辑

Poj 2115

摘要: 模线性方程,水题#include <iostream>#include <stdio.h>using namespace std;typedef long long ll;ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0){x=1;y=0;return a;} ll d=exgcd(b,a%b,x,y); ll t=x; x=y; ... 阅读全文

posted @ 2012-03-15 19:12 Inpeace7 阅读(156) 评论(0) 推荐(0) 编辑

Poj 1061

摘要: 经典的线性模方程,考点在求最小正根#include <iostream>#include <stdio.h>using namespace std;typedef long long ll;ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0){x=1;y=0;return a;} ll d=exgcd(b,a%b,x,y); ll t=x; ... 阅读全文

posted @ 2012-03-15 16:36 Inpeace7 阅读(137) 评论(0) 推荐(0) 编辑

导航