标签:欧拉 return 同余方程 pre sum exgcd nlog 解方程 amp
int gcd(int x,int y)
{
if(y==0)return x;
return gcd(y,x%y);
}
void exgcd(int a, int b, int &d, int &x, int &y){
int t;
if(b==0) d=a,x=1,y=0;
else{
exgcd(b,a%b,d,x,y);
t=x,x=y,y=t-(a/b)*y;
}
}
合并同余方程组
\[
x\;mod\;a=k
\x\;mod\;b=p
\]
设\(x=s_1\times a+k=s_2\times b+p\)
移项得\(s_1\times a-s_2\times b=p-k\)
此时可将\(s_1,s_2\)看做求解方程\(ax+by=c\)的\(x,y\),此时用扩展欧几里得求解通解:
\(x=s_1\times a + k\)
\(x=x_0\times a+k+K\times [a,b]\)
\(x\%[a,b]=x_0\times a+k\)
\(C_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}\)杨辉三角\组合数递推式可以理解为一个DP转移
\(C_n^m=\frac{A_n^m}{m!}\)因为取出的\(m\)个数共有\(m!\)种排列
求组合数通项公式时可用逆元前缀积\(C_n^m=fac[n]\times preinv[m]\times preinv[n-m]\)
\(\phi(i)\)\(1\)到\(i\)中有多少数与\(i\)互质
对于质数\(p\)
\(\phi(p)=p-1\)小于自己的都互质
\(\phi(p^k)=(p-1)\times p^{k-1}\)
欧拉定理\(a^{\phi(n)}\equiv 1(mod\;n)\)
推论:\(x\equiv y(mod\;\phi(n))\),则\(a^x\equiv a^y(mod\; n)\)
\(a\times a^{\phi(n)-1}\equiv 1(mod\;n)\)所以当\(n\)为质数时,\(a\)的逆元为\(a^{n-2}\)(同费马小定理)
求\(a^{b^{c}}mod\;n\),利用推论将\(b^cmod\;\phi(n)\)再继续算
\(\text{Miller_Rabin}\)算法\(O(log_n)\)判断是否为质数
埃氏筛复杂度\(n+n/2+n/3+\cdots+n/n=O(nlog_n)\)
线性筛
for(register int i=2;i<=n;++i){
if(!notp[i]) p[cnt++]=i;
for(int j=0;j<cnt;++j){
if(i*p[j]>n) break;
notp[i*p[j]]=1;
if(i%p[j]==0) break; // 保证线性筛,每个数只会被其最小质因子筛掉
}
}
另一种可同时求出最小质因数(MinP[]
)的版本
for(int i=2;i<=n;++i){
if(!MinP[i]) MinP[i]=i,prime[++tot]=i;
for(int j=1;j<=tot;++j){
if(i*prime[j]>n) break;
MinP[i*prime[j]]=prime[j];
if(i%prime[j]==0) break;
}
}
定义域为\(N^+\),满足:
对\(x\)分解质因数\(x=p_1^{k_1}\times p_2^{k_2}\cdots p_n^{k_n}\)
则\(f(x)=f(p_1^{k_1})\times f(p_2^{k_2})\cdots f(p_n^{k_n})\)
常见积性函数:
求解
f[1]=1;
for(i=2;i<=n;i++){
int j=i/MinP[i];
if(MinP[j]==MinP[i])w[i]=w[j];
else w[i]=j;
if(w[i]==1){
// i为pk ,直接计算
}
else f[i]=f[w[i]]*f[i/w[i]];
}
运算符\(*\)
\(f*g=h,h(x)=\sum_{d|x}f(d)\times g(x/d)\)
满足交换律、结合律、加法分配率
定理:两个积性函数的狄利克雷卷积还是积性函数
标签:欧拉 return 同余方程 pre sum exgcd nlog 解方程 amp
原文地址:https://www.cnblogs.com/santiego/p/11625794.html