拉插过程中,这样是龊的。
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。
将逆元提出来求就对了。
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;
}
}