问题描述
从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位字符串是否合理

package adv171;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String id = in.nextLine();in.close();int[] idNums = new int[18];idNums[6] = 1;idNums[7] = 9;for (int i = 0; i < id.length(); i++) {if (i < 6) {idNums[i] = id.charAt(i) - '0';} else {idNums[i + 2] = id.charAt(i) - '0';}}int mod = (idNums[0] * 7 + idNums[1] * 9 + idNums[2] * 10 + idNums[3] * 5 + idNums[4] * 8 + idNums[5] * 4+ idNums[6] * 2 + idNums[7] * 1 + idNums[8] * 6 + idNums[9] * 3 + idNums[10] * 7 + idNums[11] * 9+ idNums[12] * 10 + idNums[13] * 5 + idNums[14] * 8 + idNums[15] * 4 + idNums[16] * 2) % 11;switch (mod) {case 0:idNums[17] = 1;break;case 1:idNums[17] = 0;break;case 2:idNums[17] = -1;break;case 3:idNums[17] = 9;break;case 4:idNums[17] = 8;break;case 5:idNums[17] = 7;break;case 6:idNums[17] = 6;break;case 7:idNums[17] = 5;break;case 8:idNums[17] = 4;break;case 9:idNums[17] = 3;break;case 10:idNums[17] = 2;break;}for (int i = 0; i <= 17; i++) {if (i != 17) {System.out.print(idNums[i]);} else {if (idNums[17] == -1) {System.out.print("x");} else {System.out.print(idNums[17]);}}}}
}

[Java] 蓝桥杯ADV-171 算法提高 身份证号码升级相关推荐

  1. java 蓝桥杯算法提高 身份证号码升级(题解)

    试题 算法提高 身份证号码升级 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为 ...

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

    算法提高 身份证号码升级 时间限制:1.0s 内存限制:256.0MB 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位 ...

  3. 蓝桥杯 ADV-171 算法提高 身份证号码升级

    问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...

  4. 蓝桥杯 算法提高 身份证号码升级

    问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...

  5. 算法提高 身份证号码升级

    问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...

  6. 算法提高 身份证号码升级

    问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码. ...

  7. 蓝桥杯题库 算法提高非vip部分(C++、Java)代码实现(251-280)

    文章目录 ADV-251 Petri Net Simulation cpp: java: ADV-252 Navigation cpp: ADV-256 The Sky is the Limit cp ...

  8. [蓝桥杯]测试题 E 算法提高 我们的征途是星辰大海 题解和C++示例代码

    E 算法提高 我们的征途是星辰大海 时间限制:1.0s   内存限制:256.0MB 最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成. 共有四种方格: '.' 代表 ...

  9. JAVA蓝桥杯:高精度算法

    问题描述 问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义 ...

最新文章

  1. smartgit 授权文件 Free Trial License to Non-Commercial
  2. OkHttp3源码详解(三) 拦截器-RetryAndFollowUpInterceptor
  3. 64位汇编之linux系统调用
  4. mongodb学习篇
  5. ajax实现上传文件
  6. 差分进化算法python_差分进化算法DE-python实现
  7. NetScaler配置只允许某个组访问桌面
  8. ZZNU-oj-2141:2333--【O(N)求一个数字串能整除3的连续子串的个数,前缀和数组+对3取余组合数找规律】...
  9. 06年他预测阿里巴巴会干掉慧聪网,当时所有人都在嘲笑他
  10. Coded UI Test 常见问题总结
  11. 计算机word降序排列怎么做,怎么降序排列word
  12. Kotlin 只读变量
  13. c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法
  14. java eden区_请说明一下eden区和survial区的含义以及工作原理?
  15. 工地安全帽反光衣识别系统 yolov5
  16. 数据库中的html代码放到div中放不进去
  17. SPSS描述统计分析【003期】
  18. 二手MicroServer Gen8折腾记 - 配置 RouterOS 软路由
  19. jquery表格日历写入html,jQuery简单实现日历的方法
  20. Java爬虫新浪微博的帖子

热门文章

  1. Android 通过WebService进行网络编程,使用工具类轻松实现
  2. android常用开源库分享
  3. Android开发 ——线性布局文件、TextView、ListView的基本写法
  4. 从0开始构建SpringCloud微服务(1)
  5. linux每日命令(13):more命令
  6. js 基础 -- 循环、函数调用 、全局和局部变量、异常捕获、事件
  7. 路由器和iP地址的那些事
  8. 通过IP判断登录地址
  9. idea超炫的自定义模板
  10. idea 配置springmvc+mybatis(图文教程)