4.12 咪咕笔试编程题AC
题目描述:给定一个非常大的整数,要求输出该整数反转后的二进制数
思路:1. 先把整数用阶梯除法方式转变成二进制保存进数组(该数组存入后已实现反转无需再次做反转步骤) 2. 再把反转后的二进制转变成整数
不知各位大佬拿到的是不是这道题,总感觉有更好的思路,求分享
代码如下:
package Testing;
import java.util.*;
public class Main
{
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
long number = Long.parseLong(input);
long[] binaryForm = new long[32];
for(int i = 0; number > 1; i++)
{
long temp = number % 2;
number = number / 2;
binaryForm[i] = temp;
if(number < 2)
{
binaryForm[i + 1] = number;
}
}
long sum = 0;
int power = 0;
for(int i = binaryForm.length - 1; i >= 0; i--)
{
if(binaryForm[i] == 1)
{
sum += Math.pow(2, power);
}
power++;
}
System.out.print(sum);
}
}