l 问题
条形码扫描后是一个13位的数字字符串。为应对扫描错误的情况,条形码有“检查和”校验的方法,用于校验条形码是否有错。具体的计算规则为:
取出13位字符串的前12位数字,将每个奇数位的数字相加得到S1,将每个偶数位的数字相加得到S2,用S1减去S2,然后和10取余数,最后取绝对值,得到的数字应该等于第13位条码,如果不等则为错误的条形码。
请计算给定的条形码的正确性。
l 思路
大致思路:将给出的条形码的13位数字转化为序列,求出序列中前12位奇数位的数字之和后,再求出偶数位之和,将求得的两个数值做减法运算,所得的差对10求余后再取绝对值,最后判断所得的数值与条形码的最后一位数字是否相等。
l 代码
|
A |
|
1 |
="1234567890123" |
给出的条形码 |
2 |
=A1. split@p() |
将条形码转化为序列 |
3 |
=A2(to(12)).step(2,1).sum() |
前12位奇数位的数字之和 |
4 |
=A2(to(12)).step(2,2).sum() |
计前12位偶数位的数字之和 |
5 |
=abs((A3-A4)%10) |
奇数位之和减去偶数位之和再对10求余最后取绝对值 |
6 |
=A5==A2.m(-1) |
判断A5的结果是否与条形码的最后一位相同 |
l 结果