PAT-B 1031 查驗身份證 【字串】
PAT-B 1031 查驗身份證
https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392
題目
一個合法的身份證號碼由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
。
樣例輸入
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
樣例輸出
12010X198901011234
110108196711301866
37070419881216001X
分析
使用字串接收資料,然後簡單計算即可。
C++程式
#include<iostream>
#include<ctype.h>
#include<cstring>
#include<algorithm>
using namespace std;
char a[]={'1','0','X','9','8','7','6','5','4','3','2'};//對映關係
int power[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//各位的權重
bool solve(string s)
{
int res=0;
for(int i=0;i<s.length()-1;i++)
if(isdigit(s[i]))
res+=(s[i]-'0')*power[i];
else
return false;//前17位不合法
res%=11;
return (s[s.length()-1]==a[res])?true:false;
}
int main()
{
int n;
string s;
cin>>n;
bool flag=false;
while(n--)
{
cin>>s;
if(!solve(s))
{
cout<<s<<endl;
flag=true;
}
}
if(!flag) cout<<"All passed"<<endl;
return 0;
}
相關文章
- 身份證字串檢查字串
- 7-3 查驗身份證
- JavaScript身份證真偽查驗介面廠家有哪些?身份證查詢真偽JavaScript
- javascript 驗證身份證JavaScript
- WEB身份驗證Web
- 身份證驗證工具類
- 身份證如何查驗真偽?C#身份證二要素、三要素介面整合C#
- Oracle的身份驗證Oracle
- PHP 驗證身份證號碼PHP
- 中國身份證號驗證庫
- C++身份證號驗證C++
- C#驗證身份證號C#
- L1-016 查驗身份證 pythonPython
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- 作業系統身份驗證和口令檔案身份驗證總結作業系統
- js正則驗證身份證號JS
- PHP 身份證精確匹配驗證PHP
- 身份證號碼驗證系統
- 身份證號碼之js驗證JS
- oracle常見身份驗證Oracle
- 客戶端身份驗證客戶端
- 用 python 製作全國身份證號驗證及查詢系統Python
- L1-016 查驗身份證 分數 15
- 身份證號碼驗證演算法演算法
- js實現身份證號碼驗證JS
- JS驗證身份證的合法性JS
- jQuery正則驗證15/18身份證jQuery
- asp.core 同時相容JWT身份驗證和Cookies 身份驗證兩種模式JWTCookie模式
- 身份證歸屬地查詢
- javascript身份證號碼校驗JavaScript
- 使用java完成ldap身份驗證JavaLDA
- C# Web Service 身份驗證C#Web
- 精確驗證身份證號碼程式碼
- java 實現從15位~18位的身份證號碼轉換,校驗中國大陸公民身份證、香港居民身份證、澳門身份證和臺灣身份證。Java
- javascript 驗證身份證完全版,根據身份證獲取性別年齡JavaScript
- C++批次核驗身份證真偽、實名認證介面、身份證識別C++
- 身份證資訊查詢與校驗(IdCard) v1.01
- 【仙山】flutter版谷歌身份驗證器Flutter谷歌