CF1598G The Sum of Good Numbers

题目描述

我们称一个正整数为“好数”,如果它的十进制表示中不包含数字 $0$。 对于一个由好数组成的数组 $a$,已知存在某两个相邻元素之和等于 $x$(即 $x = a_i + a_{i+1}$,对于某个 $i$)。$x$ 也是一个好数。 然后,将数组 $a$ 的所有元素依次写成一个没有分隔符的字符串 $s$。例如,如果 $a = [12, 5, 6, 133]$,那么 $s = 1256133$。 现在给定字符串 $s$ 和数字 $x$,你的任务是确定字符串中对应于这两个相邻元素的位置。如果有多组答案,可以输出任意一组。

输入格式

第一行包含字符串 $s$($2 \le |s| \le 5 \cdot 10^5$)。 第二行包含整数 $x$($2 \le x < 10^{200000}$)。 输入保证一定存在解,即总能从字符串 $s$ 中选出两个相邻的子串,将它们转化为整数后,其和等于 $x$。

输出格式

第一行输出两个整数 $l_1$ 和 $r_1$,表示第一个加数($a_i$)在字符串 $s$ 中的起止位置。 第二行输出两个整数 $l_2$ 和 $r_2$,表示第二个加数($a_{i+1}$)在字符串 $s$ 中的起止位置。

说明/提示

在第一个样例中,$s[1;2] = 12$,$s[3;3] = 5$,$12+5=17$。 在第二个样例中,$s[2;3] = 54$,$s[4;6] = 471$,$54+471=525$。 在第三个样例中,$s[1;1] = 2$,$s[2;2] = 3$,$2+3=5$。 在第四个样例中,$s[2;7] = 218633$,$s[8;13] = 757639$,$218633+757639=976272$。 由 ChatGPT 4.1 翻译