首页 > 试题广场 >

10进制 VS 2进制

[编程题]10进制 VS 2进制
  • 热度指数:19978 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们称B为A的二进制逆序数。     例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。

输入描述:
    一个1000位(即10^999)以内的十进制数。


输出描述:
    输入的十进制数的二进制逆序数。
示例1

输入

173

输出

181
import java.math.BigInteger;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()) {
			BigInteger n = scanner.nextBigInteger();
			String nBinary = n.toString(2);
			String nBinaryReverse = "";
			
			for (int i = nBinary.length() - 1;i >= 0; i--) {
				nBinaryReverse += Character.toString(nBinary.charAt(i));
			}
			
			//BigInteger类的构造方法,将二进制的字符串转化成BigIntege十进制类型的
			System.out.println(new BigInteger(nBinaryReverse,2));
		}
	}
}

发表于 2024-03-26 21:27:34 回复(0)
import java.util.Scanner;
import java.util.Stack;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            BigInteger num1 = new BigInteger(in.next());
            Stack<Integer>s1 = new Stack<>();
            while (!num1.equals(new BigInteger("0"))) {
                s1.push(num1.mod(new BigInteger("2")).intValue());
                num1 = num1.divide(new BigInteger("2"));
            }
            Stack<Integer>s2 = new Stack<>();
            while (!s1.empty()) {
                s2.push(s1.pop());
            }
            BigInteger num2 = new BigInteger("0");
            while (!s2.empty()) {
                num2 = num2.multiply(new BigInteger("2"))
                       .add(new BigInteger(String.valueOf(s2.pop())));
            }
            System.out.println(num2);
        }
    }
}

编辑于 2024-01-29 22:01:09 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = br.readLine()) != null) {
            BigInteger A = new BigInteger(s, 10);
            String atwo = A.toString(2);
            StringBuilder sb = new StringBuilder(atwo);
            String btwo = String.valueOf(sb.reverse());
            BigInteger B = new BigInteger(btwo, 2);
            System.out.println(B);
        }
    }
}

发表于 2021-02-25 11:54:24 回复(0)

Java大数处理进制非常的方便,特意查的

还是那句话,老铁们,虽然不是同一个时间,但是是同一道题目,所以通过合理的方法AC才是王道。

奥利给,干了,兄弟们

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String[] args){
        Scanner cin=new Scanner(System.in);
        while(cin.hasNext()){
            BigInteger a=cin.nextBigInteger();
            String s=a.toString(2);
            String res="";
            for(int i=s.length()-1;i>=0;i--){
                res=res+s.charAt(i);
            }
            BigInteger b=new BigInteger(res,2);//这个意思就是表明我res是一个二进制字符串,所以转换成大整数自动转换成十进制的
            //String t=b.toString(10);
            //BigInteger ans=new BigInteger(t);
            //BigInteger ans=new BigInteger(res,10);//这个表示的是res是一个十进制的字符串,所以ans返回的是一个大整形将还是res这个字符串,没有变化的
            System.out.println(b);
        }
    }
}
编辑于 2020-04-10 17:11:40 回复(0)
Java
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //   一个1000位(即10^999)以内的十进制数。
        BigInteger i = scanner.nextBigInteger();
        String s = i.toString(2);
        String reverse = new StringBuilder(s).reverse().toString();
        System.out.println(new BigInteger(reverse,2));
    }
}


发表于 2020-03-18 17:55:30 回复(0)
//十进制数转化为二进制数,逆序反转后转化为十进制数
import java.util.*;
import java.math.BigInteger;
public class Main {
    public static void main(String[] args) {     // write your code here
        Scanner in=new Scanner(System.in);
        while (in.hasNext()){
            String s1=in.nextLine();
            BigInteger a=new BigInteger(s1,10);//十进制的大整数
            StringBuffer sb=new StringBuffer();
            //二进制数只有转化成字符串才能反转
            String s2=sb.append(a.toString(2)).reverse().toString();
            BigInteger b=new BigInteger(s2,2);
            System.out.println(b.toString(10));
        }
    }
}

发表于 2018-08-16 18:50:20 回复(0)
import java.util.*;
import java.math.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println(new BigInteger(new StringBuilder(new BigInteger(sc.next()).toString(2)).reverse().toString(), 2));
    }
}

发表于 2018-03-05 14:31:35 回复(0)

问题信息

难度:
8条回答 14923浏览

热门推荐

通过挑战的用户

查看代码