在codewars的第30题
Loading Kata: Validate Credit Card Number
给定最多16位数的正整数,true如果它是有效的信用卡号,false则返回,如果不是,则返回。
1.从右边第二个数字开始,每隔一个数字 *2,
2.轮询每个数字如果大于9则减去9
3.计算每个数字之和
4.判断数字之和是否能被10整除.
#include <algorithm>
#include <string>
#include <vector>
class Kata {
public:
static bool validate(long long int n) {
std::string str =std::to_string(n);
std::vector<int> temp1;
int iLen = str.size();
for (int i= iLen-1;i >=0;i--)
{
int val = str[i] - '0';
if ((iLen-i) %2 ==0)
{
temp1.push_back(val * 2);
}
else
{
temp1.push_back(val);
}
}
int sum = 0;
for (auto var :temp1)
{
if (var >9)
{
var -= 9;
}
sum += var;
}
return sum % 10 == 0;
}
};