思路:把该进制下的字符表示存到char数组。输入两个要相加的字符串,给少的字符串前面补‘0’。
翻转两个字符串,遍历每个字符进行相加,去找对应索引在该进制中的字符,保存到字符串ss中。
进位就是相加/进制,剩余就是相加%进制。
import java.util.Scanner;
public class Main {
static int find(char a,char[] ch){
for(int i=0;i<ch.length;i++)
if(a==ch[i])
return i;
return 0;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String s=sc.next();
char[] ch=new char[s.length()];
for(int i=0;i<s.length();i++){
ch[i]=s.charAt(i);
}
String s1=sc.next();
String s2=sc.next();
if(s1.length()>s2.length()){
String tmp="";
for(int i=0;i<(s1.length()-s2.length());i++)
tmp+=Character.toString(ch[0]);
tmp+=s2;
s2=tmp;
}
else{
String tmp="";
for(int i=0;i<(s2.length()-s1.length());i++)
tmp+=Character.toString(ch[0]);
tmp+=s1;
s1=tmp;
}
StringBuilder b1=new StringBuilder(s1);
StringBuilder b2=new StringBuilder(s2);
b1.reverse();
b2.reverse();
int n=s1.length();
String ss="";
int ai=0;
for(int i=0;i<n;i++){
int index1=find(b1.charAt(i),ch);
int index2=find(b2.charAt(i),ch);
int index=(ai+index1+index2)%ch.length;
ai=(ai+index1+index2)/ch.length;
ss+=Character.toString(ch[index]);
}
if(ai!=0){
ss+=Character.toString(ch[ai]);
}
StringBuilder ans=new StringBuilder(ss);
System.out.println(ans.reverse());
}
}