#P7379. [COCI2018-2019#6] Lun
[COCI2018-2019#6] Lun
题目描述
现有一个判断某种银行卡号是否合法的算法:
- 从倒数第二位开始从右往左,每隔一个数位就将其乘 ,否则保留原数位不变。
- 将被乘 的数位分别计算其数位之和。
- 计算经过操作之后的所有数位之和,并将其乘 再对 取模,检验其是否等于最后一位(即银行卡号的校验码)。
若待验证卡号为 ,则判断方法如下:
银行卡号各数位 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
每隔一位乘 (从倒数第二位开始向左) | - | ||||||||||
计算得到的数位和并累加 |
将得到的和 乘 再对 取模,得到 。其中 为该银行卡号校验码,因此原卡号合法。
现有一个缺失一个数位的银行卡号,请根据上述算法在缺失数位处补充一个合适的数位,使得得到的银行卡号合法。
输入格式
第一行输入整数 ,表示缺失数位的银行卡号的长度。
第二行有一个长度为 的字符串,表示银行卡号。该字符串中只包含数位 和字符 x
。字符 x
将且仅将出现一次,表示缺失的数位。
输出格式
输出符合题意的数位。如果有多种符合题意的数位,则输出最小的。
11
7992739871x
3
5
x2464
5
10
93380x1696
1
提示
数据规模与约定
对于 的数据,缺失的数位位于银行卡号校验码处,即字符 x
位于字符串最后一位。
对于 的数据,。
说明
本题分值按 COCI 原题设置,满分 。
题目译自 COCI2018-2019 CONTEST #6 T1 Lun。