北京师范大学珠海分校
Judge Online of ACM ICPC
1123 身份证号码验证
C语言版
Judge Online of ACM ICPC
1123 身份证号码验证
C语言版
- #include <stdio.h>
- #include <string.h>
- /* 读入数据 */
- void input(char a[]){
- int i;
- for(i=0;i<6;i++) scanf("%c",&a[i]);
- a[6]='1';
- a[7]='9';
- for(i=8;i<17;i++) scanf("%c",&a[i]);
- a[17]='/0';
- }
- /* 计算加权因子 */
- int mi(int n){
- int i,sum=1;
- for(i=1;i<=n;i++) sum*=2;
- sum%=11;
- return sum;
- }
- /* 计算校验数字 */
- int jiaoyan(char a[]){
- int i,sum=0;
- for(i=0;i<17;i++)
- sum+=mi(17-i)*(a[i]-'0');
- sum%=11;
- return sum;
- }
- int main(){
- int i,n;
- char a[19],f[11]={'1','0','X','9','8','7','6','5','4','3','2'};
- scanf("%d",&n);
- while(n--){
- getchar();
- input(a);
- a[17]=f[jiaoyan(a)];
- a[18]='/0';
- printf("%s/n",a);
- }
- return 0;
- }