zoukankan      html  css  js  c++  java
  • 信用卡号验证

     当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过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; 
    }
    不一样的烟火
  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11251050.html
Copyright © 2011-2022 走看看