编程题
### 问题描述 小蓝总是以为自己对数字很敏感,于是小桥给他出了道题,当然,他知道小蓝一定不会,于是简化了一下问题。 有一个 $M$ ($M = 2^{30}$) 进制的超大的数 $N$,共有 $len$ 个数位,同时给出一个超大的区间 $[L,R]$,问在 $N$ 的子数中,有多少个**子数**在区间内。由于进制超大,我们用空格将大数的每一位区分开。 **子数**的定义: 删除一些 $N$ 的前缀(可能为空)和后缀(可能为空),剩下来的部分组成的数,**注意**,只要是删除的前缀不同,或者后缀不同,就算不同的子数,例如 $\lbrace 1, 2, 2, 2, 3 \rbrace$,子段 $[2, 3] $ 形成的数 $\lbrace 2, 2 \rbrace$ 和子段 $[3, 4] $ 形成的数 $ \lbrace 2, 2 \rbrace$ 视为不同的数。 当然,为了简化问题,小桥保证 $N$ 的每一位是**有序**的,并且告诉你是**单调不减**的。 ### 输入格式 第一行输入一个数 $len$,代表大数的长度。 第二行,输入 $len$ 个数,表示大数 $N$ 的每一位 $\lbrace n_1, n_2, ..., n_{len} \rbrace$,每个数用空格隔开。 第三行输入一个数 $len_l$,代表区间左端点的长度。 第四行输入 $len_l$ 个数,代表 $L$ 的每一位 $\lbrace l_1, l_2, ..., l_{len_l} \rbrace$,每个数用空格隔开。 第五行输入一个数 $len_r$,代表区间右端点的长度。 第六行,输入 $len_r$ 个数,代表 $R$ 的每一位 $\lbrace r_1, r_2, ..., r_{len_r} \rbrace$,每个数用空格隔开。 $ 1 \le lenl \le lenr \le len \le 2 \times 10^5$。 $1 \le L \le R \le N, 0 \le n_i, l_i, r_i \lt 2^{30}$。 超大数 $L,R,N$ 的输入不存在前导 $0$。 注意:在大数 $N$ 的描述中,$n_1$ 是高位,$n_{len_n}$ 是低位,其他大数类似。 ### 输出格式 输出一行一个整数 $ans$,代表有 $ans$ 个子数在区间内。 ### 样例输入 ```bash 5 1 2 3 4 5 2 2 0 5 1 0 0 0 0 ``` ### 样例输出 ```bash 8 ``` ### 说明 由于输入的数都没有超过 $10$,我们当作 $10$ 进制看待,$N=12345$,$L=20$,$R=10000$。 符合条件的数为 $\lbrace 23,34,45,123,234,345,1234,2345 \rbrace$ 共计 $8$ 个。
查看答案
赣ICP备20007335号-2