关于本题做法
查看原帖
关于本题做法
1340759
ARIS2_0楼主2024/11/10 19:51

本人思路如下:设 f[i][j](1in,0j63)f[i][j](1\le i\le n,0\le j\le 63) 为从字符串上第 ii 个点走 2j2^j 步时走过的距离,但因为中途不对 109+710^9+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;
}

然而这么写是错误的,因为对于 xx 来说,xmodnx\mod n(xmod109+7)modn(x\mod 10^9+7)\mod n 不是一个东西,换句话说,当我拿到 mod109+7\mod 10^9+7 意义下异客的位置时,我不知道他现在的位置对应的是原字符串的哪一个位置。

所以是我状态就错了还是思路错了,求解答

2024/11/10 19:51
加载中...