2016蓝桥杯算法提高——身份证号码升级
2016-02-21 13:25
405 查看
身份证号码升级
问题描述
从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位字符串是否合理
代码:
问题描述
从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.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { char[] c1={'1','0','x','9','8','7','6','5','4','3','2'}; int[] c2={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; String s=new String(); Scanner in = new Scanner(System.in); s=in.next(); char[] ch=s.toCharArray(); char[] c=new char[20]; System.arraycopy(ch, 0, c, 0, ch.length); //扩展数组的长度,因为直接转换为数组,在下面的for语句中数组会越界 for(int i=14;i>=6;i--){ c[i+2]=c[i]; } c[6]='1'; c[7]='9'; int sum=0; for(int i=0;i<=16;i++){ sum+=(int)(c[i]-'0')*c2[i]; } sum%=11; for(int i=0;i<17;i++) System.out.print(c[i]); System.out.println(c1[sum]); } }
相关文章推荐
- Ubuntu下相关软件的安装
- 简单的网页版计算器
- 278. First Bad Version
- 【慕课笔记】第二章 认识JAVA中的字符串 第4节 JAVA中String类的常用方法(二)
- scala中的面向对象定义类,构造函数,继承
- python,django做中间件屏蔽非法访问
- 链表初始化总结
- juce教程004-模态对话框
- 【收藏】Android AutoLayout全新的适配方式, 堪称适配终结者
- 把安卓源代码中的system app独立出来,像开发普通app那样开发
- 通读SDWebImage①--总体梳理、下载和缓存
- 常用的排序算法
- javascript+HTML5自定义元素播放焦点图动画
- C语言实现的高精度计算器
- hdu 1068 girls and boys(二分图求最大独立集)
- 学习笔记:极客学院-2. Unity3D 基础操作-Scene与场景漫游
- 组织对项目的影响
- [ahk]获取网站的源代码
- [深度好文]电动车真的很环保吗?
- 函数参数传递2