package cn.msf;
import java.util.HashMap;
import java.util.Scanner;
/**
* @author : msf
* @date : 2023/1/4
*/
public class Add36 {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// String s1 = sc.nextLine();
// String s2 = sc.nextLine();
String s1 = "zb";
String s2 = "ab";
String res = new Add36().calAdd36(s1, s2);
System.out.println(res);
}
private String calAdd36(String s1, String s2) {
int n1 = s1.length() - 1;
int n2 = s2.length() - 1;
// 进位
int pre = 0;
StringBuilder res = new StringBuilder();
while (n1 >= 0 && n2 >= 0) {
int num1 = cul(s1.charAt(n1));
int num2 = cul(s2.charAt(n2));
int num = num1 + num2 + pre;
pre = 0;
if (num > 35) {
pre = 1;
num -= 36;
char trans = trans(num);
res.append(trans);
} else {
res.append(trans(num));
}
n1--;
n2--;
}
// 开始判断 n1 或者 n2 是否有剩余
while (n1 >= 0) {
int num1 = cul(s1.charAt(n1));
int num = num1 + pre;
pre = 0;
res.append(trans(num));
n1--;
}
while (n2 >= 0) {
int num2 = cul(s2.charAt(n2));
int num = num2 + pre;
pre = 0;
res.append(trans(num));
n2--;
}
if (pre == 1) {
res.append("1");
}
return res.reverse().toString();
}
public int cul(char x) {
if (x >= '0' && x <= '9') {
return x - '0';
} else {
return x - 'a' + 10;
}
}
public char trans(int x) {
if (x >= 0 && x <= 9) {
return (char) (x + '0');
} else {
return (char) (x -10 + 'a');
}
}
}
36 进制加法
于 2023-01-04 22:35:07 首次发布