题目背景
碎片在少年的世界里四处飘散。
最后被少年收集起,成为一列仿若无意义的字符。
题目描述
少年只剩一个字符串 S,它的长度为 n,下标以 1…n 编号;
以及一个数组 a1…n。
少年写出了两个数 L,R 并尝试寻找那些被光芒照耀过的碎片:
对于 S 中两个出现位置不同而本质相同的子串 (Sl1…r1,Sl2…r2),若 L≤(ar1⊕ar2)+(r1−l1+1)≤R,则这两个子串之间存在光芒。
其中 Sl…r 表示 S 的下标在 [l,r] 内的字符顺次连接构成的子串,⊕ 表示按位异或运算。
少年试图寻找,有多少对子串之间存在光芒。
子串对是无序的。具体地,(Sl1…r1,Sl2…r2) 和 (Sl2…r2,Sl1…r1) 视为一个子串对。
而你只需要将答案对 998244353 取模之后告诉他就行了。
输入格式
第一行,一个正整数 n。
第二行,一个字符串 S。
第三行,n 个非负整数 a1…n。
第四行,两个非负整数 L,R。
输出格式
一行,一个非负整数,表示答案。
提示
对于 20% 的数据,n≤100;
对于 50% 的数据,n≤103;
对于 100% 的数据,1≤n≤105, 0≤ai,L,R≤105, L≤R, S 只包含小写字母。
「出题人的馈赠」
勇敢一点。相信某算法的常数。你想到的可能就是垃圾标算。