@ysner
2018-04-12T23:07:07.000000Z
字数 2558
阅读 2151
数论
假如a是一个整数,b是一个素数,,则
应用:
若为正整数,且互质,则
费马小定理是欧拉定理的特殊情况,因为为素数时,。
拓欧降次:
给定,求在模意义下的逆元。
int exgcd(int a,int b,int &d,int &x,int &y)
{
if(!b) x=1,y=0,d=a;
else exgcd(b,a%b,d,y,x),y-=x*(a/b);
}
{
re int a;
exgcd(i,p,g,x,y);
while(x<0) x+=p;
printf("%d\n",x);
}
struct matrix{
int a[100][100];
matrix()
{
memset(a,0,sizeof(a));
}
int * operator [](int x)
{
return a[x];
}
matrix operator *(matrix b)
{
matrix c;
for(int i=0;i<l;i++)
for(int j=0;j<l;j++)
for(int k=0;k<l;k++)
c[i][k]=(c[i][k]+1ll*a[i][j]*b[j][k])%w;
return c;
}
}S,T;
有个元素,其中第个元素有个,求全排列数。
即先全排列,然后给每个元素编号。
有个元素,每个元素可选无穷多个,一共选个,求方案数。
假如第个元素选个,那么原问题变为。
令,那么
此时,即每个元素都要选。所以等于在个元素(个空位)间放个隔板。
前几个数:
好像我只会用它打表找规律
公式:
应用:
求解
据观察,的取值只有个。
定理:若有一个值,那么数论分块中其同值上界为。
即在这一段区间内,的取值是一样的,于是可计算整块贡献。
int l = 1 , r , ans = 0;
while(l<=n){
r = n/(n/l);
ans += (r-l+1)*(n/i);
l = r + 1;
}
莫比乌斯反演有两种形式。。。
如果我们有函数,以及,并且有
如果我们有函数,以及,并且有:
至于函数,叫做莫比乌斯函数。
其定义为: