2012年3月15日

算法导论-----数论-----求解模线性方程

摘要: ax=b(modn) 设<a>是模n加法群中的循环子群,即<a>={}={axmodn},所以有一个解当且仅当b属于<a>,而|<a>|必定是n的约数 对任意正整数a,n,若d=gcd(a,n),在中 <a>=<d>={0,d,2d,3d…(n/d-1)d}所以|<a>|=n/d; 证明:(1)<d>属于<a> ax+ny=d,ax=d(modn),d的倍数属于a (2)<a>属于<d> 设m属于<a> ax=m(modn),ax+ny=m,d|ax+ 阅读全文

posted @ 2012-03-15 11:18 Inpeace7 阅读(276) 评论(0) 推荐(0) 编辑

Poj 3641

摘要: 水题,纯套millerrabin模板#include <stdio.h>#include <iostream>#include <stdlib.h>#include <time.h>#include <cmath>#include <algorithm>#include <string.h>using namespace std;typedef long long ll;ll mulmod(ll ... 阅读全文

posted @ 2012-03-15 11:09 Inpeace7 阅读(203) 评论(0) 推荐(0) 编辑

Poj 3696 miller-rabin pollard-rho解法

摘要: 挺好的题目(1)888…8可以表示为8*10^0+8*10^1+…+8*10^(n-1)可看出,抽出每一项组成等比数列,根据等比数列和公式,得,8/9(10^n-1)所以8/9(10^n-1)=kL,k为正整数,即L|(8/9(10^n-1))(2)令gcd(8,L)=s,故(10^n-1)*8/s=9kL/s8,9互素,故8/s与9L/s互素,故10^n-1=0(mod 9L/s)10^... 阅读全文

posted @ 2012-03-15 10:52 Inpeace7 阅读(562) 评论(0) 推荐(0) 编辑

2012年3月14日

Poj 2262

摘要: 哥德巴赫猜想 考点:打印素数表,水题#include <iostream>#include <stdio.h>#include <string.h>using namespace std;const int MAX=1000000;bool isprime[MAX+10];int prime[MAX+10],cnt;void getprime(){ long long i,j; ... 阅读全文

posted @ 2012-03-14 22:08 Inpeace7 阅读(148) 评论(0) 推荐(0) 编辑

2012年3月13日

Poj 1995 幂取模

摘要: 经典幂取模,递归172ms,递推110ms#include <iostream>#include <stdio.h>using namespace std;/*long long exmod(long long a,long long b,long long n){ long long ret=1; long long temp=a; while(b) { ... 阅读全文

posted @ 2012-03-13 09:37 Inpeace7 阅读(161) 评论(0) 推荐(0) 编辑

2012年3月12日

算法导论-----数论-----元素的幂

摘要: 1.<a>为a反复相乘生成的子群,(a)为a在中的阶,phi为规模2.欧拉定理:对n>1,=1(modn),对所有a属于成立3.费马定理:p素数,,=1(modp) 对所有a属于成立4.原根:(g)=||,对模n,每个元素都是g的幂,g是的原根或生成元若包含一个原根,则循环群 5.对所有素数p>2和正整数e,满足循环群n的值为2,4,6.离散对数:g是中的原根,a是中任一元素,存在z使,=a(modn),z称为离散对数,即7.离散对数定理:g是原根,则=(modn)成立,当且仅当x=y(modφ(n))成立8.p 是奇素数且e>=1,则方程仅有两个解,x=1和x= 阅读全文

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

Poj 2603 约数个数和

摘要: 水题,求约数个数和,p1p2…pr为素数,约数个数σ(n)=(1+e1)(1+e2)…(1+er)约数和τ(n)=(1+p1++…+)(1+p2++…+)…(1+pr++…+)σ(n),τ(n)都为乘性函数注意结果要取个位数,WA一次#include <iostream>#include <stdio.h>#include <string.h>using namespace std;const ... 阅读全文

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

Zju2678 大数gcd

摘要: 画图推导,大数gcd,摘自网上的模板#include<stdio.h>#include<string.h>#define maxlen 1000+2 //数据的最大长度struct HP { int len, s[maxlen]; } ; //存储数据的结构char s1[maxlen],s2[maxlen];//存储输入的两个数据void PrintHP(HP x) //输出{ for(i... 阅读全文

posted @ 2012-03-12 16:23 Inpeace7 阅读(292) 评论(0) 推荐(0) 编辑

Poj 2773 Happy 2006(枚举互素数)

摘要: Phi(m)为与乘法群模m的规模,将区间分段,每段长度m,每个区间内有phi(m)个与m互素的数,枚举第一段的所有互素数coprime[i],结果为m*(k/phi[m])+coprime(k%phi[m]),注意特殊处理phi[m]整数倍数的数。参考网上的一些代码,学会了快速求互素数的方法。时间:47ms。上代码:#include <iostream>#include <stdio.h>#include <string.h>using namespace std;const int MAX=1000000;bool isprime[MAX+10],isfa 阅读全文

posted @ 2012-03-12 11:34 Inpeace7 阅读(310) 评论(0) 推荐(0) 编辑

2012年3月10日

Poj 2480

摘要: 求,1<=x<=n可转化为n的每一个约数,乘以,1~n内与n的最大公约数为此约数个数,再求和。求n的约数。求个数。设a为n的一个约数,求满足gcd(x,n)=d,x的个数gcd(x/d,n/d)=1,所以乘法群n/d的规模为phi(n/d),即x有phi(n/d)个求n的约数继续简化问题设n= 设f(n)为 所以f() = =*(1-1/pk)+ *(1-1/pk)+…+*... 阅读全文

posted @ 2012-03-10 19:41 Inpeace7 阅读(442) 评论(0) 推荐(0) 编辑

导航