求phi及一些基本模板

每次写麻烦存一下

const int MN=1e6;
ll jc[MN+10],jc2[MN+10];
int pri[MN+10],phi[MN+10],cntpri;
bool vispri[MN+10];
ll fsp(int x,int y)
{
    if (y==0) return 1;
    if (y==1) return x;
    ll ans=fsp(x,y/2);
    ans=ans*ans%mo;
    if (y%2==1) ans=ans*x%mo;
    return ans; 
}
ll C(int n,int m)
{
    if (n<m) return 0;
    return jc[n]*jc2[m]%mo*jc2[n-m]%mo;
}
int gcd(int x,int y)
{
    if (!y) return x;
    return gcd(y,x%y);
}
inline void prime(){
    jc[0]=jc2[0]=1;
    rep(i,1,1e6) jc[i]=jc[i-1]*i%mo;
    jc2[1000000]=fsp(jc[1000000],mo-2);
    dep(i,1e6-1,1) jc2[i]=jc2[i+1]*(i+1)%mo;
    phi[1]=1; 
    rep(i,2,MN){
        if(!vispri[i]) { pri[++cntpri]=i; phi[i]=i-1;}
        for(int j=1;j<=cntpri&&i*pri[j]<=MN;++j){
            vispri[i*pri[j]]=1;
            if(i%pri[j]==0)
            {
                phi[i*pri[j]]=phi[i]*pri[j];
                break;
            }
            phi[i*pri[j]]=phi[i]*(pri[j]-1);
        }
    }
}

 

posted @ 2022-02-06 15:41  尹吴潇  阅读(77)  评论(0编辑  收藏  举报