蓝桥杯_算法提高_身份证升级(简单字符处理)
2016-04-01 19:26
225 查看
问题描述
从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.Scanner; /** * @author 翔 * */ public class Main { private static int[] arr={7 ,9 ,10 ,5 ,8 ,4 ,2 ,1 ,6 ,3 ,7 ,9 ,10 ,5 ,8 ,4 ,2}; private static char[] p={'1' ,'0' ,'x' ,'9' ,'8' ,'7' ,'6' ,'5' ,'4' ,'3' ,'2'}; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); String s=sc.next(); s=s.substring(0,6)+"19"+s.substring(6); char[] charArr=s.toCharArray(); int[] numArr=new int[17]; for(int i=0;i<17;i++){ numArr[i]=charArr[i]-'0'; } int sum=0; for(int i=0;i<17;i++){ sum+=(numArr[i]*arr[i]); } int remain=sum%11; s+=p[remain]; System.out.println(s); } }
相关文章推荐
- 1467 数据结构:一元多项式加法
- redhat6.2相关配置(yum,,r,rstudio,ipythonnotebook)
- 在CocoaPod中安装BmobSDK
- 无头指针单链表删除元素
- 复制文件时,如何显示进度条(使用BlockRead函数读取数据,并插入application.ProcessMessages)
- 文件交互功能实现问题总结
- CodeForces 631E Product Sum(斜率优化DP+二分|三分)
- Service生命周期浅析 4000
- HNOI模拟赛总结
- jsp 分页条 结合page.jar 实现分页数据和分页条分离
- 1465 数据结构:有序链表的合并
- Jenkins环境搭建(1)
- 流媒体协议RTMP,RTSP与HLS有什么不同
- HDU 1232 畅通工程 并查集
- OpenGL(二)
- ADO异步查询显示进度条
- hdu1874 畅通工程续--单源最短路径
- 三句java语句连接到jsp文件的作用
- IT十八掌作业_java基础第26天_Java基础总结/虚拟机基础
- BZOJ 2004: [Hnoi2010]Bus 公交线路