AT_past17_k 正しいチェックディジット

题目描述

给定一个长度为 $N$ 的字符串 $S$,由数字和 `?` 组成。 请判断是否可以将每个 `?` 替换为某个数字,使得下列值为 $10$ 的倍数。如果可以,请给出一种替换方案。 - $\displaystyle \sum^{N}_{i=1} i \times $(将 $S$ 的第 $i$ 个字符视为一位整数)

输入格式

输入从标准输入读取,格式如下: > $N$ $S$

输出格式

如果不存在满足条件的替换方案,输出一行 `No`。 否则,输出一种满足条件的替换方案,格式如下: > Yes $T$ 第一行输出 `Yes`。 第二行输出字符串 $T$,它是将 $S$ 中的 `?` 替换为数字后得到的字符串,并满足题目中的条件。

说明/提示

### 样例解释 1 考虑将 `935?0` 的第 $4$ 个字符 `?` 替换成什么数字。 - 如果第 $4$ 个字符 `?` 替换为 $5$,得到字符串 $T=93550$。 - $1 \times 9 + 2 \times 3 + 3 \times 5 + 4 \times 5 + 5 \times 0 = 50$,确实为 $10$ 的倍数。 或者,也可以将第 $4$ 个字符 `?` 替换为 $0$,得到 `93500`,也满足条件。 ### 样例解释 2 `1?3?5` 中有两个 `?`,一共有 $100$ 种替换方式,但没有任何一种可以满足题意。 ### 样例解释 3 虽然字符串 `0` 中不包含任何 `?`,但 $1\times 0 = 0$,本身就是 $10$ 的倍数。 ### 数据范围 - $N$ 满足 $1 \leq N \leq 2 \times 10^5$。 - $S$ 是一个长度为 $N$ 的、由数字和 `?` 组成的字符串。 由 ChatGPT 5 翻译