마지막 인증 위치 생성

2575 단어
     18 ,  17           ,    ,        ,   0 10,10     x  ,     ,     。
 
 

代码如下:


  
   
  
  
  
  
  
  1. #include <stdio.h>
  2. //#include <math.h>
  3. int main(void)
  4. {
  5.     char idCard[] = "62240019891111123";
  6.     char map[] = "10x98765432";
  7.     int w[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//w[i] = 2^(i-1), (i=18,17,16,.....2);
  8.     int i;
  9.     int sum = 0;
  10.     for (i=0; i<17; i++)
  11.     {
  12.         /*
  13.         The last num is : map[sum(a[i]*w[i])%11]
  14.         a[i] = idCard[i-1], (i=1,2,3,....17)
  15.         w[i] = 2^(i-1), (i=18,17,16,.....2); the w[i] result is : {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}
  16.         */
  17.         sum += (idCard[i]-48) * w[i];//sum += (idCard[i]-48) * ((int)pow(2,(18-i-1))%11);
  18.     }
  19.     printf("The last num: %c/n", map[sum%11]);
  20.     return 0;
  21. }

좋은 웹페이지 즐겨찾기