題目描述:
本題要求實現一種數字加密方法。首先固定一個加密用正整數 A,對任一正整數 B,將其每 1 位數字與 A 的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對 13 取餘——這裏用 J 代表 10、Q 代表 11、K 代表 12;對偶數位,用 B 的數字減去 A 的數字,若結果爲負數,則再加 10。這裏令個位爲第 1 位。
輸入格式:
輸入在一行中依次給出 A 和 B,均爲不超過 100 位的正整數,其間以空格分隔。
輸出格式:
在一行中輸出加密後的結果。
輸入樣例:
1234567 368782971
輸出樣例:
3695Q8118
具體實現:
package com.hbut.pat;
import java.util.Scanner;
public class Pat_1048 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] ist = sc.nextLine().split(" ");
String t = "0123456789JQK",s = "";
int bo = ist[0].length() - ist[1].length(),le;
if(bo < 0) {
for(int i = 0 ; i < Math.abs(bo) ; i++) {
ist[0] = "0" + ist[0];
}
} else {
for(int i = 0 ; i < bo ; i++) {
ist[1] = "0" + ist[1];
}
}
char[] A = ist[0].toCharArray(), B = ist[1].toCharArray();
le = A.length;
for(int i = le - 1 ; i >= 0 ; i--) {
if((le - i) % 2 == 1) { //基數
s = t.charAt((A[i] - '0' + B[i] - '0') % 13) + s;
} else {
s = (B[i] - A[i] + 10) % 10 + s;
}
}
System.out.print(s);
}
}