Lun
时间限制:1秒 内存限制:256M
题目描述
现有一个判断某种银行卡号是否合法的算法:
- 从倒数第二位开始从右往左,每隔一个数位就将其乘 \(2\),否则保留原数位不变。
- 将被乘 \(2\) 的数位分别计算其数位之和。
- 计算经过操作之后的所有数位之和,并将其乘 \(9\) 再对 \(10\) 取模,检验其是否等于最后一位(即银行卡号的校验码)。
若待验证卡号为 \(79927398713\),则判断方法如下:
| 银行卡号各数位 | \(7\) | \(9\) | \(9\) | \(2\) | \(7\) | \(3\) | \(9\) | \(8\) | \(7\) | \(1\) | \(3\) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 每隔一位乘 \(2\)(从倒数第二位开始向左) | \(7\) | \(\red {18}\) | \(9\) | \(\red 4\) | \(7\) | \(\red 6\) | \(9\) | \(\red {16}\) | \(7\) | \(\red 2\) | - |
| 计算得到的数位和并累加 | \(7\) | \(\green 9\) | \(9\) | \(4\) | \(7\) | \(6\) | \(9\) | \(\green 7\) | \(7\) | \(2\) | \(=67\) |
将得到的和 \(67\) 乘 \(9\) 再对 \(10\) 取模,得到 \(67 \times 9 \bmod 10=3\)。其中 \(3\) 为该银行卡号校验码,因此原卡号合法。
现有一个缺失一个数位的银行卡号,请根据上述算法在缺失数位处补充一个合适的数位,使得得到的银行卡号合法。
输入格式
第一行输入整数 \(N\),表示缺失数位的银行卡号的长度。
第二行有一个长度为 \(N\) 的字符串,表示银行卡号。该字符串中只包含数位 \(0 \sim 9\) 和字符 x。字符 x 将且仅将出现一次,表示缺失的数位。
输出格式
输出符合题意的数位。如果有多种符合题意的数位,则输出最小的。
输入输出样例 #1
输入 #1
11
7992739871x
输出 #1
3
输入输出样例 #2
输入 #2
5
x2464
输出 #2
5
输入输出样例 #3
输入 #3
10
93380x1696
输出 #3
1
说明/提示
数据规模与约定
对于 \(50\%\) 的数据,缺失的数位位于银行卡号校验码处,即字符 x 位于字符串最后一位。
对于 \(100\%\) 的数据,\(1 \le N \le 100\)。
信息
- ID
- 1105
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 被复制
- 1
- 上传者