PAT1048數字加密(java實現)
題目描述:
本題要求實現一種數字加密方法。首先固定一個加密用正整數 A,對任一正整數 B,將其每 1 位數字與 A 的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對 13 取餘——這裡用 J 代表 10、Q 代表 11、K 代表 12;對偶數位,用 B 的數字減去 A 的數字,若結果為負數,則再加 10。這裡令個位為第 1 位。
-
輸入格式:
輸入在一行中依次給出 A 和 B,均為不超過 100 位的正整數,其間以空格分隔。 -
輸出格式:
在一行中輸出加密後的結果。
解題思路:這道題主要技巧就是想到把短的那串數字用0去補充,這樣輸出的時候就能直接一個for迴圈搞定了。並且題目需要是不超過100位正整數,所以想到用字串去接收。對於奇偶情況的不同處理,程式中用一個flag作為判斷,就免去了考慮這個整數的位數原本是奇數還是偶數了。
易錯點:這道題的輸出的整數位數是和較長的那個保持一致,而不是我一開始以為的和後一個輸入的保持一致。
程式:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String ab = bf.readLine();
String[] a = ab.split(" ");
int alength = a[0].length();
int blength = a[1].length();
int max = alength >= blength?alength:blength;
int[] result = new int[max];
int d = (blength-alength>=0)?blength-alength:alength-blength;
if (d!=0) {
if (alength<blength) {
for (int i = 0; i < d; i++) {
a[0] = "0" + a[0];
}
}else {
for (int i = 0; i < d; i++) {
a[1] = "0" + a[1];
}
}
}
int flag = 1;
for (int i = max-1 ; i >=0; i--) {
int t1=Integer.parseInt(String.valueOf(a[0].charAt(i)));
int t2=Integer.parseInt(String.valueOf(a[1].charAt(i)));
flag = -flag;
if (flag==-1) {
result[i] = (t1+t2)%13;
}
int temp = t2-t1;
if (flag==1&&temp>=0) {
result[i] = temp;
}
if(flag==1&&temp<0){
result[i] = temp+10;
}
}
for (int i = 0; i <result.length; i++) {
if (result[i]==10) {
System.out.print("J");
continue;
}
if (result[i]==11) {
System.out.print("Q");
continue;
}
if (result[i]==12) {
System.out.print("K");
continue;
}else {
System.out.print(result[i]);
}
}
}
}
相關文章
- java使用RSA加密方式,實現數字簽名Java加密
- RSA加密解密及數字簽名Java實現加密解密Java
- 數字加密加密
- Java加密技術(八)——數字證照Java加密
- PAT1044火星數字(java實現)Java
- Java安全之對稱加密、非對稱加密、數字簽名Java加密
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- 圓圈中最後剩下的數字(Java實現)Java
- java MD5 加密實現Java加密
- PAT1019 數字黑洞(java實現)Java
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- 加密與數字簽名加密
- QQ TEA加密演算法 JAVA實現加密演算法Java
- 使用Java加密與解密實現步驟Java加密解密
- AES加密 – iOS與Java的同步實現加密iOSJava
- java實現DES資料加密與解密Java加密解密
- AES加密演算法的JAVA實現加密演算法Java
- java 實現 DES加密 解密演算法Java加密解密演算法
- Java中Blowfish加密演算法實現Java加密演算法
- java使用DES加密方式,實現對資料的加密解密Java加密解密
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 在java中程式設計實現數字簽名系統 (轉)Java程式設計
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- java實現MD5加鹽加密方法Java加密
- Java實現SSH模式加密原理及程式碼Java模式加密
- 用ImageMagick實現數字盲水印
- 深入理解加密、解密、數字簽名和數字證書加密解密
- 【PAT乙級】1048 數字加密加密
- 1048 數字加密(字首和思想)加密
- 安全基礎:數字信封、數字簽名、數字證書(加簽驗籤,加密解密)加密解密
- Blowfish 加密演算法 Java 版簡單實現加密演算法Java
- Java實現常用加密演算法-SM4Java加密演算法
- linux實現猜數字小遊戲Linux遊戲
- Java引用計數與實現Java
- Java實現水仙花數Java
- 淺析數字化價值,如何保障數字化價值實現?
- PAT-B 1048 數字加密【字串】加密字串