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 翻译