PAT 1048 數字加密 (20分)(Java)

題目描述:

  本題要求實現一種數字加密方法。首先固定一個加密用正整數 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);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章