#866. 校验信用卡号码
校验信用卡号码
题目描述
当你输入信用卡号码(位数字)的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过 算法来验证通过。
该校验的过程:
从卡号最后一位数字开始,逆向将奇数位( 等等)相加。
从卡号最后一位数字开始,逆向将偶数位数字,先乘以 (如果乘积为两位数,则将其减去 ),再求和。
将奇数位总和加上偶数位总和,结果应该可以被 整除。
例如,卡号是:
奇数位和 =
偶数位乘以 (有些要减去 )的结果:1 6 2 6 1 5 7 7,求和 =。
最后 可以被 10 整除,认定校验通过。
请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:,否则显示 。
比如,用户输入:
程序输出:
提示:你的程序要能够处理多组数据。建议使用
while (cin >> s)
{
}
的结构。
输入格式
数据有多组,每一行一个由数字组成的字符串,为一张银行卡卡号。
输出格式
每组数据输出一行,如果是合法卡号,输出 。否则输出 。
样例
5432123456788881
5432123456788885
4408041234567893
4408041234567873
Pass
Fail
Pass
Fail
数据范围/约定
时间空间限制:1s, 256MB.