数论总结

1.

 

 bzoj 1042

dp[i]  1种硬币用完后,用的张数为d[i]+1,剩余的随便分,可以用dfs ,把各种情况枚举出来公 16种

void dfs(int x,int k,int sum)//k层数,用来判断该加还是该减

{

if(sum<0) return ;

if(x == 5)

{

if(k&1)ans=dp[sum];//这道题是奇减偶加;超出限制面积为s为第一项(不能超限制啊,所以减去第一种超限制的,减去第二种超限制的,。。。。加上第一种和第二种共同超限制的)

else ans+=dp[sum];

return ;         

}

dfs(x+1,k+1,sum-c[i]*(d[i]+1));

dfs(x+1,k,sum);

}

2同余 

gcd(x,y) = gcd(x, x+y) = gcd(x, x-y)=a;

x = a*k1,y=a*k2;

x+y = a*(k1+k2);

x 和 x+y 互质

证明: 假设 x,x+y,不互质,k为因数

x/k,(x+y)/k都为整数

y/k=(x+y)/k-x/k也是整数,

那么  x,y还有除了a以外的公约数;

有了这个公式我们可以找到gcd的快速求法  主要思想先除去2的因子

 x,y 为两数

x里有k1个2

y里有k2个2

k=min(k1.k2)

k个2就是x,y的公约数

当x/(k1个2),y/(k2个2)以后呢,x和y就成了两个奇数了(交换位置使 x>y)

x-y为偶数自当再把2的因子除掉

这时候2的因子就不是x,y的公约数,继续除 2 使 x,y再次变成奇数;

gcd(x,y) = gcd(x,y-kx);

当其中有个数为0 剩下的一个数变为x,y的奇公约数

3.线性递推

A[i]表示i的逆元,p是质数

p≡0(mod p)  p/i*i+p%i≡0(mod p)

p/i = r, p%i = l;

r*p+k≡0(mod p)

同时乘以k^-1 p^-1;

r*k^-1+p^-1≡0(mod p)

p^-1≡-r*k^-1(mod p)

把r,k带入 即证

A[I] = (p -(p/i))*A[p%i]%p;(逆元打表)!

4.威尔逊定理

(p-1)!≡p-1(mod p)

当p=2时   ≡ 1(mod p) 

当p为质数 (p>2)

p的完全缩系为(1,2,3,...p-1)

(完全缩系: 1大小为φ(P) 2.系中元素两两不同余(mod n) 3 (mod n) 后与p互质)

他们说显然:(我不知道为什么)1 ≡ 1(mod p) p-1 ≡ p-1(mod p)

缩系里的其它某数的逆元 ≡缩系里的其它另一个数(mod p)

并且两两不重合 ;

某数*它的逆元 = 1

所以除了 1 ,p-1 以外 2*3*4.....*p-2 = 1^((p-1-2)/2)        //p为质数 (p>2),那么 p为奇数 奇减奇为偶,所以除得尽2;

即证

5.费马小定理  (p 为正数)

  

p为质数,p的完全缩系为(1,2,3,...p-1)

(a,2a,3a....(p-1)a)也是完全缩系

1*2*3*...*(p-1) ≡ a*2a*3a*...*(p-1)a  (mod p)   //注意 1 和 a 不一定同余

两边同时*(1*2*3...(p-1)的逆元//1*2*3...(p-1)和p 互质,1*2*3...(p-1不存在大小为 p 的因子

求逆元

a^(p-1)≡ 1(mod p);
a ^(p-2) ≡ a^-1(mod p);//p为质数时成立

即证

6..BSGS

怎么求 x?

c为素数  

由费马小定理 a^(c-1) ≡ 1 (mod c)

a^(x+c-1) ≡ b (mod c)

a^(x+c-1) ≡ a^x (mod c)

所以 c属于[0,c+1);

m 为√c;

使 x = i *m + j;

i属于[0,√c);枚举;

如果我们再枚举 j 的话  //j属于[0,√c);

时间复杂度为 c

所以为了省时间复杂度,

a^x=a^(i*m)*a^(j) ≡ b (mod c);

我们把 a^(i*m)看做A,a^(j)看做x 

Ax≡ b (mod c)

Ax+ck=b;

由扩欧 x = x0*(b/d) + k(c/d);gcd(A,c)为1  (c 为质数);

x= x0*b + kc;

x0*b=a^j%c;

用数字哈希把x0*b散射到一条链上,当然不同a[j]可能对应一个x0*b,所以用邻接链表来表示x0*b,

复杂度省了很多,枚举邻接链表上的a^j,找到x;

7 exBSGS

8.欧拉函数

φ(n):小于等于n的正整数与n互质的数的个数。

 

 

p是质数,p^k 中有 p 2p 3p 4p ...p^k-p和p^k不互质

每个数相差k  所以一共有 p^k/p,p^(k-1)个

所以φ(p) = p^k-p^(k-1)=p^k(1-1/p);

对于第二个

p1,p2p3...pr为n的质因子 n=p1*p2...*pr;

φ(p1*p2...*pr)=φ(p1)*φ(p2)....φ(pr)=(p1*p2*...pn)*(1-1/p1)*(1-1/p2)*...(1-1/pr)=n(1-1/p1)*(1-1/p2)*...(1-1/pr);

对于第三个

设 ck = {i|gcd(i,n)=k}的数 i<=n;,k为n的因数//n不一定是质数

c1+c2+c3...+cn = n;//把1到n 分到c中;

gcd(i,n) = k;

gcd(i/k,n/k) = 1;

φ(n/k)即为i/k的个数;

即证

9.单个欧拉函数

10..欧拉函数线性筛

如果i和prim[j]不互质 φ(i*prim[j])=prim(j)*φ(i)

11欧拉定理

 

n的完全缩系为(p1,p2,p3...pn)

gcd(a,n)  = 1;

(ap1,2p2,3p3....apn)也是完全缩系

p1*p2*p3...pn≡ p1a*p2a*p3a*...*pna  (mod n)   //注意 1 和 a 不一定同余

两边同时*(p1*p2*...pn)的逆元p1*p2..pn和n 互质,p1*p2...pn不存在大小为 n 的因子

即证

求逆元

a^(phi[i])≡ 1(mod p);
a ^(phi[i] - 1) ≡ a^-1(mod p);//p不是质数时这样做, p,a互素

12.扩展欧拉函数

 

1 a^b=a^(k*φ(p)+^b%φ(p))   =a^φ(p))^k*a^(b%φ(p))

a^φ(p)) ≡  1(mod p)  

a^b≡ a^(b%φ(p)) (mod p)  

2显然

3 不会。。很有用背到

13 莫比乌斯函数

积性函数

 

证明

n=p1^a1*p2^a2...pr^ar(p是指数能够整除p1^a1就只有p1,p1^2,p1^3.....)

d=p1*p2(有很多可能n的质因子随便组合)

//打不出Σ的上下,,,,

莫比乌斯函数也是积性函数

1,3显然   

1.μ(1)=1;1=1*1;

3.n'!=1也!各种p相乘,

把 n' 的所有质因子也不在p中

所以  μ(n')=u(p1')*u(p2')...μ(pr')=0;

主要证明2

n=p1*p2(多少个p无所谓,,,)

μ(n)=μ(p1*p2)=(-1)^(1+2)

u(p1)=(-1)^1,u(p2)=(-1)^2;

μ(n)=μ(p1)*μ(p2)

求mus;

最后一行 phi改成mus

如果是素数 p = p一个质因数μ(p) = -1

如果 i 和 prim[j]不互质,说明 m 有 p=prim[j]两个质因数;

μ(m) = μ(p1^a1)*μ(p2^a2)...*u(p^2).(当然a1,a2可能为1,2,...n),u(p^2)=0;

μ(m) =0;

如果 i 和 prim[j]互质

μ(m)=μ(i)*μ(prim[j])//积性函数

I(n)为积性函数

当n>1   I(n) = I(p1^a1)*I(p2^a2)...I(pn^an)

单独分析I(p1^a1)=μ(1)+μ(p1)+μ(p1^2)...μ(p1^a1);

u(1)=1,u(p1)=(-1)^1,μ(p1^2)+...+μ(p1^a1) = 0;

I(p1^a1) = 0;

I(n) = 0;

 当n = 1,I(1) = u(1)=1;

即证;

 

 

求逆元

求逆元一般公式(条件b|a)
ans = (a/b)mod m  = (a mod (bm)) /b;
a/b  = km + ans;
a = k mb + ans b;
a mod mb = ans b;
(a mod (bm))/b = ans

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值