当前位置:网站首页 > 更多 > 编程开发 > 正文

[算法刷题] 试题 算法提高 身份证号码升级

作者:CC下载站 日期:2020-03-31 00:00:00 浏览:56 分类:编程开发

资源限制时间限制: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位字符串是否合理
importjava.util.*;

publicclass身份证号码升级{

	/**
	*@paramargs
	*/
	publicstaticvoidmain(String[]args){
		//TODOAuto-generatedmethodstub
		Scannersc=newScanner(System.in);
		Stringstr=sc.next();
		str=str.substring(0,6)+"19"+str.substring(6,15);
		char[]yzm={'1','0','x','9','8','7','6','5','4','3','2'};
		int[]xs={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
		List<Character>list=newArrayList<Character>();
		intsum=0;
		for(inti=0;i<str.length();i++){
			charx=str.charAt(i);
			sum+=(int)(str.charAt(i)-48)*xs[i];
			list.add(x);
		}
		sum%=11;
		list.add(yzm[sum]);
		for(Charactercharacter:list){
			System.out.print(character);
		}
	}
}


您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯