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]);
}
}
}
}
相關文章
- PAT1044火星數字(java實現)Java
- PAT1019 數字黑洞(java實現)Java
- 數字加密加密
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- Java中Blowfish加密演算法實現Java加密演算法
- QQ TEA加密演算法 JAVA實現加密演算法Java
- 使用Java加密與解密實現步驟Java加密解密
- java實現MD5加鹽加密方法Java加密
- 1048 數字加密(字首和思想)加密
- 【PAT乙級】1048 數字加密加密
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- Java實現常用加密演算法-SM4Java加密演算法
- PAT-B 1048 數字加密【字串】加密字串
- Java引用計數與實現Java
- 安全基礎:數字信封、數字簽名、數字證書(加簽驗籤,加密解密)加密解密
- linux實現猜數字小遊戲Linux遊戲
- 非對稱加密和數字證書加密
- 實現全站HTTPS加密HTTP加密
- 如何實現HTTPS加密HTTP加密
- 淺析數字化價值,如何保障數字化價值實現?
- 對稱加密、非對稱加密、RSA、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- 如何實現炫酷的數字大屏
- NFT加密錢包數字藏品交易平臺系統搭建方案(現成案例)加密
- RSA加密解密(無資料大小限制,php、go、java互通實現)加密解密PHPGoJava
- 實戰四:手把手教你實現數字識別
- Tensorflow實現RNN(LSTM)手寫數字識別RNN
- PbootCMS實現數字條分頁樣式效果boot
- 數字孿生如何實現?有哪些潛力?
- axure教程:如何實現數字輸入框效果
- 五步實現企業數字化轉型
- 銀彈谷:數字孿生城市如何實現?
- 打造數字化博物館都有哪些實現方式
- Qt 實現文字輸入框,帶字數限制QT
- 每個人都能實現“數字人自由”?HPG
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- [題解] 條件變數實現數字的交替輸出變數
- Java 獲取Word字數Java