警示后人
查看原帖
警示后人
815796
zzy0618楼主2024/11/19 21:56

拉插过程中,这样是龊的。

void calc(int l,int r){
    int res=ans1=ans2=0;
    for(int i=0;i<l;++i){
        for(int j=0;j<l;++j)
            if(i!=j)
                (zyq[i]*=(r-gty[j])%P*inv(gty[i]-gty[j])%P)%=P,
                (dxw[i]*=(r-gty[j])%P*inv(gty[i]-gty[j])%P)%=P;
        (ans1+=zyq[i]+P)%=P;
        (ans2+=dxw[i]+P)%=P;
    }
}

多了一个逆元复杂度多个 log\log

将逆元提出来求就对了。

void calc(int l,int r){
    int res=ans1=ans2=0;
    for(int i=0;i<l;++i){
        int s1=1,s2=1;
        for(int j=0;j<l;++j)
            if(i!=j)
                (s1*=(r-gty[j]+P))%=P,
                (s2*=(gty[i]-gty[j]+P))%=P;
        (ans1+=zyq[i]*s1%P*inv(s2))%=P;
        (ans2+=dxw[i]*s1%P*inv(s2))%=P;
    }
}
2024/11/19 21:56
加载中...