对于前者,请使用gp_hash_table<signed, signed> zz;,速度优化程度非常大,同时注意你的复杂度是否除以了那半只 log。
对于后者,尽量不要套函数。
MLE:
inline int llg(int x){
x%=p;
if(x<=sqrt(p+3)){
return bg[x]%hi;
}
if(x==p-1){
return ccc%hi;
}
int v,r;
v=p/x;
r=p%x;
if(r<x-r)
return (llg(p-1)+llg(r)-llg(v)+hi)%hi;
else
return (llg(x-r)-llg(v+1)+hi)%hi;
}
TLE:
inline int llg(int x){
if(x<=sqrt(p+3)){
return bg[x]%hi;
}
if(x==p-1){
return ccc%hi;
}
int v,r;
v=p/x;
r=p%x;
if(r<x-r)
return (ccc%hi+llg(r)-bg[v]%hi+hi)%hi;
else
return (llg(x-r)-bg[v+1]%hi+hi)%hi;
}