Baekjoon/Bronze
C++ / 백준 / 14726 / 신용카드 판별
GitHubSeob
2021. 10. 3. 21:06
문제
https://www.acmicpc.net/problem/14726
14726번: 신용카드 판별
신용카드는 총 16자리의 숫자로 구성되어 있다. 언뜻 보기에는 무작위로 된 숫자로 구성되어 있는 것 같이 보이지만 그 속에는 하나의 수학적 비밀이 숨겨져 있다. 그중 하나가 카드 번호가 유효
www.acmicpc.net
문제풀이
맨 오른쪽부터 짝수번째는 *2를 해준 뒤 10 이상이면 answer에 10을 나눈 몫, 나눈 나머지를 더해준다.
홀수번째일 때는 그냥 answer에 더 해주면 된다.
모든 자리를 확인하였으면 10으로 나눈 나머지가 있는지 없는지만 판별하여 출력하면 된다.
코드
#include <iostream>
using namespace std;
int main() {
int T(0);
int idx(0);
cin >> T;
string number("");
while (T--) {
int answer(0);
cin >> number;
for (idx = number.size() - 1; idx >= 0; --idx) {
if (idx % 2 == 0) {
int mul((number[idx] - '0') * 2);
if (mul >= 10) answer += (mul / 10 + mul % 10);
else answer += mul;
}
else answer += number[idx]-'0';
}
if (answer % 10 == 0) cout << 'T';
else cout << 'F';
cout << '\n';
}
}