import java.math.BigInteger;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
BigInteger a = in.nextBigInteger();
char[] binary=a.toString(2).toCharArray();
int n=binary.length;
//取反
for(int i=0;i<n/2;i++)
{
char t=binary[i];
binary[i]=binary[n-i-1];
binary[n-i-1]=t;
}
String tmp=new String(binary);
BigInteger bi=new BigInteger(tmp,2);
System.out.println(bi.toString());
}
}
}
常见操作
//1.将很长的字符串整数转化成为一个大整数
BigInteger bi=new BigInteger(String str);//eg."280382130818232102"
//2.利用bi转化为不同进制,返回字符串
bi.toString(int radix);//new BigInteger("8").toString(2) 输入"1000"
//3.加减乘除
a.add(BigInteger b);
a.substract(BigInteger b);
a.mutilty(BigInteger b);
a.divid(BigInteger b);
//将不同进制的字符串,转换成大整数
new BigInteger(String str,int jinzhi);
参考文档
[https://www.runoob.com/manual/jdk1.6/java.base/java/math/BigInteger.html]

京公网安备 11010502036488号