本节需要知道的知识有:
- 不进位加法
举例:
十进制里 9+9=18(会进位)
十进制里 9+9=8(不会进位) - Integer.toString(int D,int R)方法
- StringBuffer
- Math.pow()
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//方法 Integer.toString(int D,int R)
int[] a = {1,1,1,2,3,3,3,4,4,4,5,5,5,9,9,9};
int row = a.length;
char[][] re = new char[row][];
int length = re.length;
int k = 3;
int maxc = 0;
for (int i = 0; i < row; i++) {
//这里需要进行翻转,正常情况下高位补零(左边),但是在这里无法做到,那么就翻转一下,在后边(左边)补零
re[i] = new StringBuffer(Integer.toString(a[i],k)).reverse().toString().toCharArray();
if (re[i].length > maxc) {
maxc = re[i].length;
}
}
//不进位的加法
int[] result = new int[maxc];
for (int i = 0; i < row; i++) {
for (int j = 0; j < maxc; j++) {
if (j >= re[i].length) {
result[j]+=0;
}else {
result[j]+=re[i][j]-'0';
}
}
}
int res = 0;
//这里是数学的精巧运用,不进位的结果去模出现次数乘以次数的(当前)位置次方就可以知道结果
for (int i = 0; i < result.length; i++) {
res += (result[i]%k)*(int)(Math.pow(k, i));
}
System.out.println(res);
}
}