public String addBinary(String a, String b,int radix) {
int carry = 0; StringBuilder sb = new StringBuilder();
int index = 1;
for(index = 1;index <= a.length() && index<=b.length() ;index++){
char cha = a.charAt(a.length()-index);
char chb = b.charAt(b.length()-index);
int ans = cha + chb - 2* '0' + carry;
carry = ans /radix; sb.append(ans%radix);
}
for(int i=index;i<=a.length();i++){
char cha = a.charAt(a.length()-i);
int ans = cha - '0' + carry;
carry = ans /radix; sb.append(ans%radix);
}
for(int i=index;i<=b.length();i++){
char chb = b.charAt(b.length()-i);
int ans = chb - '0' + carry;
carry = ans /radix; sb.append(ans%radix);
}
if(carry != 0) sb.append(carry);
return sb.reverse().toString();
}
public String multiply(String num1, String num2) {
String ans = "0";
for(int i=num2.length()-1;i>=0;i--){
StringBuilder sbi = multiply(num1,num2.charAt(i));
for(int j=num2.length()-1;j>i;j--) //乘法补位
sbi.append('0');
ans = addBinary(ans,sbi.toString(),10);
}
int ind0 = 0;
//去除前置无效0
while(ans.charAt(ind0) == '0' && ind0 < ans.length()-1 )
ind0++;
return ans.substring(ind0);
}
public StringBuilder multiply(String num1, char num2) {
StringBuilder sb = new StringBuilder();
int carry = 0;
for(int i=num1.length()-1;i>=0;i--){
int ans = (num1.charAt(i) - '0') * (num2 - '0') + carry;
carry = ans/10;
sb.append(ans%10);
}
if(carry != 0) sb.append(carry);
return sb.reverse();
}