• Tyvj P1032 Begin2 Unit1 身份验证


    描述 Description  
     

    身份证的验证码是这样算的:
    比如一个人前17位是这样子的:
    35010219801221109
    如何算它的验证码?
    K=∑(A[i]*W[i])(i=2~18)
    也就是说K=(A[2]*W[2])+(A[3]*W[3])+...+(A[18]*W[18])
    A[i]表示的是从右数到左第i个数(包括验证码在内)
    如前面的例子中,最后三位1、0、9,i值分别为4、3、2
    A[i]就是编号为i的那个数的字符。如例子中A[2]=9,A[3]=0.
    那么W[i]又是什么呢?如图所示
    ::点击图片在新窗口中打开::
    好了,现在就可以算它的K值了。把K除以11所得的余数与下面的表格对照即可知道它的验证码。
    ::点击图片在新窗口中打开::

    输入格式 Input Format
     
      输入数据包含十七位数,即二代身份证号码的前17位数。
     
     
     
         
      输出格式 Output Format  
      二代身份证号码的第18位数,即验证码。

     

    样例输入 Sample Input

    35010219801221109

    样例输出 Sample Output

    7

     
     

    10分钟ac,两次提交,第一次忘定义变量l了。。学校服务器fp居然不能编译,害我把测评机当编译器用...

    program b1032;
     const
      w:array[2..18]of integer=(2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7);
      ky:array[0..10]of char=('1','0','X','9','8','7','6','5','4','3','2');
     var
      a:array[1..18]of integer;
      i,k,y,l:longint;
      s:string;
     begin
      k:=0;
      readln(s);
      for i := 2 to 18 do
       begin
        a[i]:=ord(s[19-i])-48;
        k:=a[i]*w[i]+k;
       end;
      l:=k mod 11;
      write(ky[l]);
     end.
    
    
  • 相关阅读:
    LeetCode 100. 相同的树(Same Tree) 2
    LeetCode 680. 验证回文字符串 Ⅱ(Valid Palindrome II) 1
    MySQL索引操作
    MySQL数据库的一些方法使用
    Anaconda安装新模块
    源码下载
    mongodb内建角色
    windows server 2008开启共享文件设置
    MySQL配置说明
    MySQL的连接数
  • 原文地址:https://www.cnblogs.com/yachen/p/1891245.html
Copyright © 2020-2023  润新知