題目大意
根據 Luhn 演算法判斷輸入的信用卡號是否合法。
題解
基本上照著做就好了,問題是題目的輸入量龐大,會 TLE。這時候我們需要用到 IO 優化,可以參考我的【筆記】IO 優化這篇文章。
#include <bits/stdc++.h>
using namespace std;
inline string read() {
string s;
char c;
while(true) {
c = getchar_unlocked();
if(c < '0' || c > '9') {
return s;
}
s += c;
}
}
inline void print(const string& s, char end = '\n') {
for(char c : s) {
putchar_unlocked(c);
}
putchar_unlocked(end);
}
void solve() {
int a[16];
for(int i = 0; i < 4; i++) {
string s = read();
for(int j = 0; j < 4; j++) {
a[i * 4 + j] = s[j] - '0';
}
}
int sum = 0;
for(int i = 0; i < 16; i += 2) {
int x = a[i] * 2;
sum += x / 10 + x % 10;
sum += a[i + 1];
}
print(sum % 10 == 0 ? "Valid" : "Invalid");
}
int main() {
int tt = stoi(read());
while(tt--) {
solve();
}
return 0;
}
如果本文對您有幫助的話幫忙點擊廣告和分享吧!
© 若無特別註明,本站文章皆由 WeakMouse's Coding Blog 原創 ,轉載引用本文前請先留言告知。本文轉載請註明文章源自 WeakMouse's Coding Blog ,作者 ,並附上原文連結: 【題解】Zerojudge a159 - 11743 - Credit Check
0 留言