2016藍橋杯演算法提高——身份證號碼升級
身份證號碼升級
問題描述
從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××年
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]);
}
}
相關文章
- 藍橋杯 -- 演算法提高 身份證號碼升級演算法
- 藍橋杯_演算法提高_身份證升級(簡單字元處理)演算法字元
- 演算法提高 ADV-171 身份證號碼升級演算法
- [藍橋杯][演算法提高VIP]超級瑪麗演算法
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- 藍橋杯 演算法提高 字串壓縮演算法字串
- [藍橋杯][演算法提高VIP]尤拉函式演算法函式
- [藍橋杯][演算法提高VIP]大數加法演算法
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- 藍橋杯年號字串字串
- [藍橋杯][演算法提高VIP]奪寶奇兵 dp演算法
- 藍橋杯-班級活動
- [藍橋杯][演算法提高VIP]分蘋果 線段樹演算法蘋果
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- java——15位身份證號碼升級到18位Java
- 藍橋杯-連號區間數
- 藍橋杯—演算法訓練演算法
- 藍橋杯--演算法訓練演算法
- 身份證號碼驗證演算法演算法
- 題目 1501: [藍橋杯][演算法提高VIP]分蘋果演算法蘋果
- 密碼脫落——藍橋杯密碼
- 藍橋杯 排序排序
- [藍橋杯][演算法提高VIP]最大乘積 貪心 雙指標演算法指標
- [Java] 藍橋杯ADV-203 演算法提高 8皇后·改Java演算法
- 藍橋杯 演算法提高 P0102(Java解題)演算法Java
- 藍橋杯第 3 場 演算法季度賽第八題 升級電纜題解演算法
- 藍橋杯 (java) 第39級階梯Java
- 藍橋杯題目編號1265
- [Java] 藍橋杯ADV-213 演算法提高 3-2求存款Java演算法
- 藍橋杯-N皇后
- 藍橋杯真題
- [Java] 藍橋杯ADV-185 演算法提高 五次方數Java演算法
- [Java] 藍橋杯ADV-147 演算法提高 學霸的迷宮Java演算法
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 演算法訓練 字首表示式 (藍橋杯)演算法
- 藍橋杯-帶分數
- 藍橋杯-翻硬幣
- 藍橋杯-螞蟻感冒