本人思路如下:设 f[i][j](1≤i≤n,0≤j≤63) 为从字符串上第 i 个点走 2j 步时走过的距离,但因为中途不对 109+7 取模可能会爆,所以我查询部分是这么写的:
int check(int x,int y){
for(int i=63;i>=0;i--){
int pos=1ll<<j;
if(y>=pos){
y-=pos;
int id=(x-1)%n+1;
x+=f[id][j];
x%=mod;
}
}
return x;
}
然而这么写是错误的,因为对于 x 来说,xmodn 与 (xmod109+7)modn 不是一个东西,换句话说,当我拿到 mod109+7 意义下异客的位置时,我不知道他现在的位置对应的是原字符串的哪一个位置。
所以是我状态就错了还是思路错了,求解答