Skip to content

Instantly share code, notes, and snippets.

@goodjack
Created December 12, 2019 11:34
Show Gist options
  • Save goodjack/22ffd3daa204d3915c6e9c07ba5f4e77 to your computer and use it in GitHub Desktop.
Save goodjack/22ffd3daa204d3915c6e9c07ba5f4e77 to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
int main() {
long long number;
cin >> number;
int oddSum = 0;
int evenSum = 0;
bool even = false;
bool visaHead = false;
bool mastercardHead = false;
bool americanExpressHead = false;
int i = 0;
while (number > 0) {
i++;
int now = number % 10;
if (even) {
// 偶數位要做的事
// *2
now *= 2;
// 個位數+十位數
// 加到 evenSum
evenSum += (now % 10) + (now / 10);
} else {
// 奇數位要做的事
// 加到 oddSum
oddSum += now;
}
number /= 10;
if (number >= 10 && number <= 99) {
if (number >= 40 && number <= 49) {
visaHead = true;
} else if (number >= 51 && number <= 55) {
mastercardHead = true;
} else if (number == 34 || number == 37) {
americanExpressHead = true;
}
}
even = !even;
}
// oddSum + evenSum
int answer = oddSum + evenSum;
// 判斷尾數是不是 0
if (answer % 10 != 0) {
cout << "無效卡號";
return 0;
}
if (visaHead && (i == 13 || i == 16)) {
cout << "VISA";
return 0;
}
if (mastercardHead && i == 16) {
cout << "MasterCard";
return 0;
}
if (americanExpressHead && i == 15) {
cout << "American Express";
return 0;
}
// return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment