package acwing寒假每日一题;
import java.io.BufferedInputStream;
import java.util.*;
public class TransNumber {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
//n次操作
int n = in.nextInt();
//输入字符串,输出字符串,a,b进制
String a_line="",b_line="";
int a,b;
List number = new ArrayList<>();
while(n--!=0){
a = in.nextInt();
b = in.nextInt();
a_line = in.next();
//强转成char[],foreach时可以忽略最后一个字符
for(char c: a_line.toCharArray()){
if(c>='0'&&c<='9') number.add(c-'0');
else if(c>='A'&&c<='Z') number.add(c-'A'+10);
else number.add(c-'a'+36);
}
//使用Collections的reverse翻转一个list,a[0]表示各位,a[n-1]表示高位
Collections.reverse(number);
//开始短除法
//存放余数
List res = new ArrayList<>();
while (number.size()!=0){
int r = 0;
for(int i = number.size()-1;i>=0;i--){
//更新当前被除数
number.set(i,(int)(number.get(i))+r*a);
//更新当前余数
r = number.get(i)%b;
//更新当前商,直接更新在number[i]上
number.set(i, number.get(i)/b);
}
//把余数存起来
res.add(r);
//去除前导0
while(number.size()!=0&&number.get(number.size()-1)==0) number.remove(number.size()-1);
}
Collections.reverse(res);
//每次把b_line赋值为空
b_line="";
for(int i:res){
//这里要加强转符号,在这里折腾好久,复习基本数据类型转换可知,char,byte,short在运算时先变成int,然后计算
//所以这里不加向下强转的话返回的就是它的ascii码值
//char到int型可以自动转换
//(char,byte,short)-int-long-float-double,boolean不能强转,也不能等效替代为数字
//基本数据类型可以直接用==,而char,Integer,String不能直接用==表示数值相等
//详情参考java笔记
if (i>=0&&i<=9) b_line+=(char)(i+'0');
else if(i>=10&&i<=35) b_line+=(char)(i-10+'A');
else b_line+=(char)(i-36+'a');
}
System.out.println(a+" "+a_line);
System.out.println(b+" "+b_line);
System.out.println();
}
}
}
```