题目地址:http://poj.org/problem?id=2305
import java.util.*;
import java.math.*;
import java.text.*;
import java.io.*;public class Main
{public static void main(String[] args) {Scanner cin = new Scanner(new BufferedInputStream(System.in));while(cin.hasNext()){int base=cin.nextInt();if(base==0) break;String s1=cin.next(),s2=cin.next();BigInteger n1=new BigInteger(s1,base); //把base进制的s1转成十进制的BigIntegerBigInteger n2=new BigInteger(s2,base); //把base进制的s2转成十进制的BigIntegerString ans=Integer.toString(n1.mod(n2).intValue(),base); //把十进制的答案转成base进制System.out.println(ans);}}
}
发现一个问题:用toString(int st,int base) 还要将BigInteger 转成 int ,可能导致进度问题
直接用BigInteger 的 toString(int base) 方法就好了
import java.util.*;
import java.math.*;
import java.text.*;
import java.io.*;public class Main
{public static void main(String[] args) {Scanner cin = new Scanner(new BufferedInputStream(System.in));while(cin.hasNext()){int base=cin.nextInt();if(base==0) break;/*String s1=cin.next(),s2=cin.next();*BigInteger n1=new BigInteger(s1,base); //把base进制的s1转成十进制的BigInteger*BigInteger n2=new BigInteger(s2,base); //把base进制的s2转成十进制的BigInteger*/BigInteger n1=cin.nextBigInteger(base); //读入base进制的s1转成十进制的BigIntegerBigInteger n2=cin.nextBigInteger(base);String ans=n1.mod(n2).toString(base); //把十进制的答案转成base进制System.out.println(ans);}}
}