专栏首页AI那点小事算法提高 身份证号码升级

算法提高 身份证号码升级

问题描述   从1999年10月1日开始,公民身份证号码由15位数字增至18位。(18位身份证号码简介)。升级方法为:   1、把15位身份证号码中的年份由2位(7,8位)改为四位。   2、最后添加一位验证码。验证码的计算方案:   将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。   请编写一个程序,用户输入15位身份证号码,程序生成18位身份证号码。假设所有要升级的身份证的四位年份都是19××年 输入格式   一个15位的数字串,作为身份证号码 输出格式   一个18位的字符串,作为升级后的身份证号码 样例输入 110105491231002 样例输出 11010519491231002x 数据规模和约定   不用判断输入的15位字符串是否合理

import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {

    static int[] coefficient = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    static String[] last = {"1","0", "x","9","8","7","6","5","4","3","2"};

    public static String Update(String old_id){
        StringBuffer str = new StringBuffer();
        str.append(old_id.substring(0,6));
        str.append("19"+old_id.substring(6));
        int sum = 0;
        for ( int i = 0 ; i < str.length() ; i++){
            sum += coefficient[i]*(int)(str.charAt(i) - '0');
        }
        sum %= 11;
        str.append(last[sum]);
        return str.toString();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(new BufferedInputStream(System.in));
        String old_id = in.next();
        String new_id = Update(old_id);
        System.out.println(new_id);
        in.close();
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 波形图(人人网2017春招真题)

    小明正在做物理实验,他在示波器上观察波形。在每一时刻,他能观察到两种可能的波形,一种是水平波形,由两个下划线组成:”__”。一种是脉冲波形,由一个斜杠和一个反斜...

    AI那点小事
  • 算法训练 最大最小公倍数

    问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

    AI那点小事
  • 算法提高 9-2 文本加密

    问题描述   先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:”A”转化”B”,”B”转化为”C”,… …”Z”转化为”...

    AI那点小事
  • PHP基础——字符串的常用操作

    在PHP中使用较多的是字符串的操作,字符串的常用操作主要有如下的几种: 字符串的表示 字符串的连接 去除字符串中的空格和特殊字符 字符串的比较 分割字符串和合成...

    zhaozhiyong
  • PHP对Json字符串解码返回NULL的一般解决方案

    php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array;若为false,返回object。如果...

    用户7657330
  • PHP基础——字符串的常用操作

    在PHP中使用trim()函数去除字符串左右的空格和特殊字符,使用rtrim()函数去除字符串右侧的空格和特殊字符,使用ltrim()函数去除字符串左侧的空格和...

    zhaozhiyong
  • 面试题57(Java方法参数传递特性)

    面试题57 2018年1月10日 本期题目 (单选题)Please write the output result 。? public class Test{ ...

    Java学习
  • 腾讯大连电话面试题目

    1.项目相关的细节问题。 2.讲讲STL里你常用的数据结构 2.1那么map的时间复杂度是多少 2.2map的底层实现是什么 3.讲解MVC每一层分别是...

    kalifa_lau
  • String 对象创建方式有哪几种?有什么区别?

    两种方法有些区别。 第一种方法,仅仅是一个赋值语句,在创建的时候,JVM 会检查在字符串池中,是否已经存在该字符串,如果已经存在了,那么会返回这个字符串的引用...

    水货程序员
  • PHP常用字符串函数用法实例总结

    砸漏

扫码关注云+社区

领取腾讯云代金券