当前位置: 代码迷 >> 综合 >> POJ 2305 Basic remains .
  详细解决方案

POJ 2305 Basic remains .

热度:74   发布时间:2023-09-23 04:19:51.0

题目地址: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);}}
}


  相关解决方案