【題解】Zerojudge a159 - 11743 - Credit Check

題目連結

題目大意

根據 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 留言