1048 數字加密 (20 分)java
本題要求實現一種數字加密方法。首先固定一個加密用正整數 A,對任一正整數 B,將其每 1 位數字與 A 的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對 13 取餘——這裡用 J 代表 10、Q 代表 11、K 代表 12;對偶數位,用 B 的數字減去 A 的數字,若結果為負數,則再加 10。這裡令個位為第 1 位。
輸入格式:
輸入在一行中依次給出 A 和 B,均為不超過 100 位的正整數,其間以空格分隔。
輸出格式:
在一行中輸出加密後的結果。
輸入樣例:
1234567 368782971
輸出樣例:
3695Q8118
Think
A 和 B長度不同時需要補零,例如1234567 368782971
A:001234567
B:368782971
使得長度相等
code
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String[] ist = in.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); } }