• Java实现蓝桥杯 算法提高 身份证号码升级


    算法提高 身份证号码升级
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      从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.util.Scanner;
    
    
    public class 身份证号码升级 {
    	public static void main(String[] args) {
    		Scanner s = new Scanner(System.in);
    		String x;
    		char a[] = new char[15];
    		char b[] = new char[18];
    		x = s.next();
    		for (int i = 0; i < 15; i++)
    			a[i] = x.charAt(i);
    		for (int i = 0; i < 6; i++)
    			b[i] = a[i];
    		b[6] = '1';
    		b[7] = '9';
    		for (int i = 8; i < 17; i++)
    			b[i] = a[i - 2];
    		int c[] = new int[18];
    		int sum = 0;
    		for (int i = 0; i < 17; i++) {
    			c[i] = (b[i] - '0');
    			if (i == 0 || i == 10)
    				sum += c[i] * 7;
    			else if (i == 1 || i == 11)
    				sum += c[i] * 9;
    			else if (i == 2 || i == 12)
    				sum += c[i] * 10;
    			else if (i == 3 || i == 13)
    				sum += c[i] * 5;
    			else if (i == 4 || i == 14)
    				sum += c[i] * 8;
    			else if (i == 5 || i == 15)
    				sum += c[i] * 4;
    			else if (i == 6 || i == 16)
    				sum += c[i] * 2;
    			else if (i == 7)
    				sum += c[i] * 1;
    			else if (i == 8)
    				sum += c[i] * 6;
    			else if (i == 9)
    				sum += c[i] * 3;
    		}
    		if (sum % 11 == 0)
    			b[17] = '1';
    		else if (sum % 11 == 1)
    			b[17] = '0';
    		else if (sum % 11 == 2)
    			b[17] = 'x';
    		else if (sum % 11 == 3)
    			b[17] = '9';
    		else if (sum % 11 == 4)
    			b[17] = '8';
    		else if (sum % 11 == 5)
    			b[17] = '7';
    		else if (sum % 11 == 6)
    			b[17] = '6';
    		else if (sum % 11 == 7)
    			b[17] = '5';
    		else if (sum % 11 == 8)
    			b[17] = '4';
    		else if (sum % 11 == 9)
    			b[17] = '3';
    		else if (sum % 11 == 10)
    			b[17] = '2';
    		for (int i = 0; i < 18; i++)
    			System.out.print(b[i]);
    	}
    
    
    }
    
    
  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078852.html
Copyright © 2020-2023  润新知