华为上机:求2的N次幂的值

求2的N次幂的值
描述:

求2的N次幂的值(N最大不超过31,用位运算计算,结果以十六进制进行显示)。

运行时间限制: 无限制
内存限制: 无限制
输入:

数字N

输出:

2的N次方(16进制,需要按照16进制格式进行显示)

样例输入:
5
样例输出:
0x20

解题

直接调用内部函数

import java.util.Scanner;
public class Main{
static int count;
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
int pow = 2<<(n-1); String s = Integer.toHexString(pow);
System.out.println("0x"+s);
} in.close();
}
}

自己实现2的n次方、16进制转换

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
// int pow = 2<<(n-1); // 直接调用内部函数
// String s = Integer.toHexString(pow);
// System.out.println("0x"+s); long x = powan(2,n);
String s2 = longToHex(x);
System.out.println(s2);
} in.close();
}
public static String longToHex(long x){
String[] a = new String[]{"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E"};
StringBuffer sb = new StringBuffer();
while(x>0){
int id = (int)x%16; //求余数,对于数组id
sb.insert(0, a[id]); // 插入到第0个位置
x=x/16; // 更新 }
sb.insert(0, "0x"); return sb.toString();
}
public static long powan(int a,int n){
if(a==0)
return 0;
if(n==0)
return 1;
if(n==1)
return a;
long res = powan(a,n>>1); // 计算一半结果
res*=res; // 偶数还是奇数都要相乘
if((n&1)==1){ // 奇数时候多个 a
res *=a;
}
return res;
}
}
上一篇:SAS提供的机器学习算法


下一篇:爪哇国新游记之二----用于计算三角形面积的Point类和TAngle类