站外题求助!
  • 板块灌水区
  • 楼主edu1081457001
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/11/23 14:26
  • 上次更新2024/11/23 16:16:23
查看原帖
站外题求助!
1004220
edu1081457001楼主2024/11/23 14:26
  • 题目描述

我国常用的信用卡卡号由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;
}

求助!

2024/11/23 14:26
加载中...