我国常用的信用卡卡号由16位数字组成,使用Luhn算法校验的步骤是,从卡号左边第一位数字开始: 1.将奇数位数字乘以2,如果乘积为两位数,则将其减去9;然后累加求和,结果保存为a1; 2.将偶数位数字累加求和,结果保存为a2 : 3.如果a1+a2能被10整除,说明卡号是合法的,否则卡号就是非法的。例如,卡号5432123456788881的3步校验计算过程如下表所示。
第一步:奇数位乘2,如果见两位数减9,求和a1=35
第二步:偶数位直接求和。a2=35
第三步:a1 +a2 = 70,能被10整法,校验通过。
请编写一个程序,输入卡号,然后判断是否合法,如果是合法卡号,输出yes。否则输出no。
示例输入 5432123456788881
示例输出 yes
答案错误50%の代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int i,a1=0,a2=0,t;
cin>>s;
for(i=0;i<=s.size()-1;i++){
if(s[i]%2==1){
t=(s[i]-'0')*2;
if(t>9)t-=9;
a1=a1+t;
}else a2+=s[i]-0;
}
if((a1+a2)%10==0)cout<<"yes";
else cout<<"no";
return 0;
}
求助!