求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; } }