CF296B Yaroslav and Two Strings

题目描述

Yaroslav 认为,如果存在两个数字 $i$ 和 $j$ $(1 \leq i, j \leq n)$,使得 $s_{i} > w_{i}$ 且 $s_{j} < w_{j}$,那么两个只包含数字且长度为 $n$ 的字符串 $s$ 和 $w$ 是不可比较的。其中 $s_{i}$ 表示字符串 $s$ 的第 $i$ 个数字,$w_{j}$ 表示字符串 $w$ 的第 $j$ 个数字。 字符串模板是由数字和问号("?")组成的字符串。 Yaroslav 有两个长度为 $n$ 的字符串模板。他想统计有多少种方式可以将两个模板中的所有问号替换为任意整数,使得最终得到的两个字符串不可比较。注意,得到的字符串可以包含前导零,不同问号可以被替换为不同或相同的数字。 请帮 Yaroslav 计算所有方案数对 $1000000007$ $(10^9+7)$ 取余的结果。

输入格式

第一行包含一个整数 $n$ $(1 \leq n \leq 10^5)$,表示两个模板的长度。 第二行包含第一个模板,由数字和问号组成,长度为 $n$。 第三行包含第二个模板,格式与第二行相同。

输出格式

输出一个整数,表示满足条件的方案数对 $1000000007$ $(10^9+7)$ 取余后的结果。

说明/提示

第一个测试样例没有问号,并且两个字符串不可比较,所以答案为 $1$。 第二个测试样例没有问号,但给定的两个字符串是可比较的,所以答案为 $0$。 由 ChatGPT 5 翻译