算法提高 身份证号码升级

时间限制: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位字符串是否合理

  1. import java.util.Scanner;
  2. public class 身份证号码升级 {
  3. public static void main(String[] args) {
  4. Scanner s = new Scanner(System.in);
  5. String x;
  6. char a[] = new char[15];
  7. char b[] = new char[18];
  8. x = s.next();
  9. for (int i = 0; i < 15; i++)
  10. a[i] = x.charAt(i);
  11. for (int i = 0; i < 6; i++)
  12. b[i] = a[i];
  13. b[6] = '1';
  14. b[7] = '9';
  15. for (int i = 8; i < 17; i++)
  16. b[i] = a[i - 2];
  17. int c[] = new int[18];
  18. int sum = 0;
  19. for (int i = 0; i < 17; i++) {
  20. c[i] = (b[i] - '0');
  21. if (i == 0 || i == 10)
  22. sum += c[i] * 7;
  23. else if (i == 1 || i == 11)
  24. sum += c[i] * 9;
  25. else if (i == 2 || i == 12)
  26. sum += c[i] * 10;
  27. else if (i == 3 || i == 13)
  28. sum += c[i] * 5;
  29. else if (i == 4 || i == 14)
  30. sum += c[i] * 8;
  31. else if (i == 5 || i == 15)
  32. sum += c[i] * 4;
  33. else if (i == 6 || i == 16)
  34. sum += c[i] * 2;
  35. else if (i == 7)
  36. sum += c[i] * 1;
  37. else if (i == 8)
  38. sum += c[i] * 6;
  39. else if (i == 9)
  40. sum += c[i] * 3;
  41. }
  42. if (sum % 11 == 0)
  43. b[17] = '1';
  44. else if (sum % 11 == 1)
  45. b[17] = '0';
  46. else if (sum % 11 == 2)
  47. b[17] = 'x';
  48. else if (sum % 11 == 3)
  49. b[17] = '9';
  50. else if (sum % 11 == 4)
  51. b[17] = '8';
  52. else if (sum % 11 == 5)
  53. b[17] = '7';
  54. else if (sum % 11 == 6)
  55. b[17] = '6';
  56. else if (sum % 11 == 7)
  57. b[17] = '5';
  58. else if (sum % 11 == 8)
  59. b[17] = '4';
  60. else if (sum % 11 == 9)
  61. b[17] = '3';
  62. else if (sum % 11 == 10)
  63. b[17] = '2';
  64. for (int i = 0; i < 18; i++)
  65. System.out.print(b[i]);
  66. }
  67. }

Java实现蓝桥杯 算法提高 身份证号码升级的更多相关文章

  1. 算法笔记_101:蓝桥杯练习 算法提高 身份证号码升级(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由 ...

  2. Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)

    试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...

  3. Java实现 蓝桥杯 算法提高 小X的购物计划

    试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...

  4. Java实现 蓝桥杯 算法提高 天天向上(DP)

    试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...

  5. Java实现 蓝桥杯 算法提高 欧拉函数(数学)

    试题 算法提高 欧拉函数 问题描述 老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油: 从1-n中有多少个数与n互质? |||||╭══╮ ┌═════┐ ╭╯让路║═║酱油专用车║ ╰ ...

  6. Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)

    试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ...

  7. Java实现蓝桥杯 算法提高 线段和点

    算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...

  8. Java实现蓝桥杯-算法提高 P1003

    算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...

  9. Java实现蓝桥杯 算法提高 八皇后 改

    **算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ...

随机推荐

  1. 【Kafka】JavaAPI操作

    目录 先创建Maven工程导入jar包 Producer API Consumer API Stream API 先创建Maven工程导入jar包 帮助文档地址:http://kafka.apache ...

  2. 解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure(真实有效)

    数据库连接失败 一.例如我在SpringBoot项目中使用了阿里的数据库连接池Driud. 有次在启动的时候,会报这样的错: Caused by: com.mysql.cj.exceptions.CJ ...

  3. Jmeter自动发送邮件

    自动发送邮件: 1.自动发送邮件,需要三个jar,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下 2.报错 Ex ...

  4. Xshell 与 Xftp 的安装与使用

    我们在日常工作中,不管是系统管理员.程序员.还是技术工程师,如果想登陆到 Linux 服务器,不可能总是跑到机房去工作,通常我们需要一个工具帮我们去做远程连接,这样我们只需要用笔记本电脑就可以连接到服 ...

  5. 解决yum 问题

    Dependencies Resolved Traceback (most recent call last): File "/usr/bin/yum", line 29, in ...

  6. mysql基础1:yum安装mysql

    1.下载yum源并安装http://dev.mysql.com/downloads/repo/yum/.wget https://dev.mysql.com/get/mysql57-community ...

  7. 安卓网络编程学习(1)——java原生网络编程(1)

    写在前面 马上要进行第二轮冲刺,考虑到自己的APP在第一轮冲刺的效果不尽人意,有很多网络方面的小BUG,这里就系统学习一下网络编程,了解来龙去脉,以便更好的对项目进行优化处理. http协议 http ...

  8. 欧拉函数 BZOJ2705

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 3154  Solved: 1968[Submit][ ...

  9. 07.django日志配置

    https://docs.djangoproject.com/en/3.0/topics/logging/ https://yiyibooks.cn/xx/python_352/library/log ...

  10. 【MySQL】大白话讲讲主从架构的几种搭配方式详解

    话不多,直接上图: 主要来详细讲讲各个搭配 1>一主一从(成本最低): 并不是用来提高程序性能的,主要是用来做数据的热备(即如果master节点挂掉的话,slave节点能充当master节点), ...