• 信用卡号验证


     当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
    该校验的过程:

          1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

          2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

          3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

          例如,卡号是:5432123456788881

          则奇数、偶数位(用红色标出)分布:5432123456788881

          奇数位和=35

          偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。

           最后35+35=70 可以被10整除,认定校验通过。

          请编写一个程序,从标准输入获得卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。

          比如,用户输入:356827027232780

          程序输出:成功

    【程序测试参考用例】

           356406010024817     成功

          358973017867744     成功

          356827027232781     失败

          306406010024817     失败

          358973017867754     失败

    #include <iostream>
    #include "algorithm" 
    #include "cmath"
    #include "string"
    #include <vector> 
    using namespace std;
    
    int main()
    {
    string id,tmp;
    while(cin>>id){
        int js=0,os=0;//奇数,偶数 
    for(int i=id.size()-1;i>=0;i--)
    {
        tmp[id.size()-1-i]=id[i];
    }
    
    for(int i=0;i<id.size();i++){
        if((i+1)%2){
        js+=tmp[i]-'0';    
        }
        else
        {
            os+=((tmp[i]-'0')*2>=10? (tmp[i]-'0')*2-9:(tmp[i]-'0')*2);
        }
    }
    
    cout<<((js+os)%10==0? "成功":"失败")<<endl; 
    }
        return 0; 
    }
    不一样的烟火
  • 相关阅读:
    ajax实例2
    分页显示中关于"序号"的问题
    <s:property value=""/> 怎么截取返回值的固定长度的字符串
    py 的 第 13 天
    py 的 第 10 天
    py 的 第 8 天
    py 的 第 9 天
    py 的 第 7 天
    这几日英文大汇
    python第五天
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11251050.html
Copyright © 2020-2023  润新知