演算法學習之路|檢驗身份證
一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下:
首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗碼M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
現在給定一些身份證號碼,請你驗證校驗碼的有效性,並輸出有問題的號碼。
輸入格式:
輸入第一行給出正整數N(<= 100)是輸入的身份證號碼的個數。隨後N行,每行給出1個18位身份證號碼。
輸出格式:
按照輸入的順序每行輸出1個有問題的身份證號碼。這裡並不檢驗前17位是否合理,只檢查前17位是否全為數字且最後1位校驗碼計算準確。如果所有號碼都正常,則輸出“All passed”。
輸入樣例1:
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
輸出樣例1:
12010X198901011234
110108196711301866
37070419881216001X
輸入樣例2:
2
320124198808240056
110108196711301862
輸出樣例2:
All passed
解題思路:
寫一個函式根據題意判斷此身份證可否通過,並將不可以通過的存入向量。
如果向量大小為0,說明全部通過,否則,依次輸出有問題的。
注意:
這裡的權重是單位1的意思,舉個例子:原本的2,權重為3時,總值為2個3,即2*3==6。
#include<iostream>
#include<vector>
using namespace std;
int quan[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char m[11]={`1` ,`0` ,`X` ,`9` ,`8` ,`7` ,`6` ,`5` ,`4` ,`3` ,`2`};
bool charm(string a,char z){
int sum=0;
for(int i=0;i<17;i++){
if(a[i]>=`0`&&a[i]<=`9`){
sum+=(a[i]-`0`)*quan[i];
}
else
return 0;
}
sum=sum%11;
if(m[sum]==z)
return 1;
else
return 0;
}
int main(){
vector<string>v;
int n;
cin>>n;
for(int i=0;i<n;i++){
string tmp;
cin>>tmp;
if(charm(tmp, tmp[tmp.size()-1])==0)
v.push_back(tmp);
}
if(v.size()==0)
cout<<"All passed";
else{
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
}
}
相關文章
- node學習---jwt實現驗證使用者身份JWT
- 身份證驗證工具類
- 直播app原始碼,進行身份驗證時,檢測身份證位數夠不夠APP原始碼
- 【PTA】查驗身份證
- 網站漏洞檢測 身份驗證碼與重要操作驗證碼安全問題網站
- PHP 驗證身份證號碼PHP
- C++身份證號驗證C++
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- js正則驗證身份證號JS
- python - 驗證身份證合法性Python
- 中國身份證號驗證庫
- 客戶端身份驗證客戶端
- 舊香港身份證校驗
- kafka SASL/PLAIN 身份驗證KafkaAI
- 身份證檢驗規則擴充套件 laravel-id-card-number套件Laravel
- asp.core 同時相容JWT身份驗證和Cookies 身份驗證兩種模式JWTCookie模式
- javascript身份證號碼校驗JavaScript
- SpringBoot整合JWT做身份驗證Spring BootJWT
- 7-3 查驗身份證
- 身份證合法性校驗
- C++批次核驗身份證真偽、實名認證介面、身份證識別C++
- 簡聊 Session 與 Token 身份驗證Session
- Rust中實現JWT身份驗證RustJWT
- 【仙山】flutter版谷歌身份驗證器Flutter谷歌
- L1-016. 查驗身份證
- Javascript使用正則驗證身份證號(簡單)JavaScript
- js檢查身份證號是否正確JS
- JavaScript身份證真偽查驗介面廠家有哪些?身份證查詢真偽JavaScript
- win10 的windows身份驗證怎麼開啟_win10怎麼進行身份驗證Win10Windows
- win10系統驗證身份好麻煩怎麼去掉 win10取消身份驗證方法Win10
- OceanBase學習之路15|體驗 Operational OLAP
- Laravel——驗證碼認證學習記錄Laravel
- PAT-B 1031 查驗身份證 【字串】字串
- 一個簡單的身份證校驗
- 7-63 查驗身份證(15 分)
- 什麼是自適應身份驗證?
- L1-016 查驗身份證 pythonPython
- gRPC(七)進階:自定義身份驗證RPC
- 身份證如何查驗真偽?C#身份證二要素、三要素介面整合C#