UVA-11743 - Credit Check

  • UVa Online Judge 解題結果請於 Submit 後,參閱 uHunt
  • 如果你有任何建議與指教,歡迎於下方留言一起討論喔!
  • 本題選為「20170926 大學程式能力檢定 CPE」題目。
  • 相同題目:ZOJ-a159

題意概要

因為信用卡卡號較長,很容易在輸入的時候打錯。為了快速的識別錯誤,如數字打錯,大多數的電子商務網站都會用一種校檢演算法來確認信用卡卡號,其中有一種較為流行的檢驗演算法叫做 Luhn 演算法 (Luhn algorithm),它可以檢測任何一位元的錯誤及多位元錯誤:

  1. 從倒數第二個位元開始,將他們放到後面,並且加倍其他沒有移動的位元到另一個列表
  2. 把列表內的數字的位元加總 (),再把被移到後面的數字加總 (),在把兩個數加起來 ()
  3. 如果這個數字的結尾是 ,則信用卡卡號為合法的,反之則是不合法的。 以這組號碼為例 5181 2710 9900 0012:
  4. 把相對應的數字加倍後,放到另一個列表 (5181 2710 9900 0012):
  5. 把這些數的位元加起來得到:。沒有對應到的位元合為 ,所以最後的總和是
  6. 不是以 結尾,故這組信用卡號並不合法。 對於這個問題,你需要寫一個根據 Luhn 演算法的程式來確認輸入的信用卡號是否合法。

Input

The input begins with a number on a single line, followed by lines each containing a single credit card number. Each credit card number consists of decimal digits in groups of four separated by single spaces.


Output

The output consists of one line for each input credit card number. If the credit card number is valid, this line consists of the string Valid, otherwise it reads Invalid.


Sample Input

2
5181 2710 9900 0012
5181 2710 9900 0017

Sample Output

Invalid
Valid
profile-image
David Lu
Hello, I'm David Lu. I am a graduate student in Department of Computer Science at National Chiao Tung University, Taiwan. I am in the Networking and Sensing Systems (NSS) Lab at NCTU. If you have any question, please feel free to contact with me.
comments powered by Disqus