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 ≡ 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