居民身份證是18位字元的編碼,每個人的編碼都是唯一的,校驗規則如下:
∑(ai*wi)mod 11 = 1
i表示號碼字元從左至右包括校驗碼字元在內的位置序號;ai表示第i位置上的號碼字元值;wi表示第i位置上的加權因子。即將各位上的數值乘上位權之和對11取餘,餘數為1則表示該編碼正確。注意:如果最後一位校驗碼是「x」或「x」,則代表該校驗碼的數值為10。
各位的權值依次是:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1
例如某身份證號碼為:370683198901117657,這是正確的編碼。
又如某號碼為:470683198902117657,這是錯誤的編碼。
輸入格式
第一行是乙個數字n,表示後面有n行待判斷的號碼 從第二行起,每行乙個18位的字串,表示要判斷的身份證號碼
輸出格式
輸出乙個數值,表示正確的身份證號碼的個數
輸入樣例4
430321200506200105
430321200505070050
430302200512290036
43038120050824012x
輸出樣例
時間限制:1000 ms
記憶體限制:65535 kb
1≤n≤400
#include
//#include
#include
using
namespace std;
char n1[19]
;int
main()
;int s,t=0;
cin>>n;
//輸入待判斷的號碼行數
for(j=
1;j<=n;j++
) s+
=a[i]
*(n1[i]-48
);//求∑(ai*wi)}if
(s%11==1
)//判斷身份證號碼是否正確
t++;//計算正確號碼個數}
cout
}
身份證號碼驗證
說明 驗證身份證的有效性 引數 cid 身份證號碼 返回 地方 出生時間 性別 private string checkcidinfo string cid if cid.length 18 char c cid cid.length 1 bool last false if c 0 c 9 c a...
驗證身份證號碼
好久沒更新了,今天簽到啦。感覺這個驗證挺重要的,也挺常用的,所以分享給需要的朋友。驗證身份證號碼,在網上找到的好東東 function checkidcard idcard var idcard,y,jym var s,m var idcard array new array idcard arra...
驗證身份證號碼
var idcardnoutil powers 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 paritybit 1 0 x 9 8 7 6 5 4 3 2 genders checkaddresscode function addresscode test address...