POJ 1220 高精度进制转换 发表于 2019-12-03 | 分类于 ACM题解 | 阅读次数: 2019ICPC银川题目。不太会用C++,保留一下JAVA模板 题目链接 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import java.util.Scanner;//相当于输入输出头文件import java.util.*;import java.math.BigDecimal;import java.math.*;public class Main{ public static void main(String[] args) { Scanner cin = new Scanner(System.in); BigInteger sum , a; sum = BigInteger.valueOf(0); BigInteger b, c; String s; b = cin.nextBigInteger(); c = cin.nextBigInteger(); s = cin.next(); int len = s.length(); BigInteger tmp = BigInteger.valueOf(1); for(int i = len - 1; i >= 0; --i ) { int k = 0; char cc = s.charAt(i); if(cc >= 'A' && cc <= 'Z') { k = cc - 'A' + 10; } if(cc >= '0' && cc <= '9') { k = cc - '0'; } if(cc >= 'a' && cc <= 'z') { k = cc - 'a' + 36; } sum = sum.add(BigInteger.valueOf(k).multiply(tmp)); tmp = tmp.multiply(b); } int cnt = 0; int ans[] = new int[10005]; while(sum.compareTo(BigInteger.valueOf(0))!=0) { ans[++cnt] = sum.mod(c).intValue(); sum = sum.divide(c); } if(cnt == 0) { System.out.println('0'); } else{ char answer[] = new char[10005]; int tot = 0; for(int i = cnt; i >= 1; --i ) { if(ans[i] >= 0 && ans[i] <= 9) { answer[++tot] = (char)(ans[i] + '0'); } if(ans[i] >= 10 && ans[i] <= 35) { char p = (char)(ans[i] - 10 + 'A'); answer[++tot] = p; } if(ans[i] >= 36 && ans[i] <= 61) { char p = (char)(ans[i] - 36 + 'a'); answer[++tot] = p; } } for(int i = 1; i <= tot; ++i) { System.out.print(answer[i]); } } } } 打赏