Java程序练习-计算2的N次方
发布日期:2021-10-24 03:36:25 浏览次数:2 分类:技术文章

本文共 2412 字,大约阅读时间需要 8 分钟。

 
计算2的N次方
时间限制: 1000ms内存限制: 65536kB
描述
任意给定一个正整数N(N<=100),计算2的N次方的值。
输入
输入只有一个正整数N。
输出
输出2的N次方的值。
样例输入
5
样例输出
32
参考代码
import java.util.*;public class Main {	public final static int SIZE = 30;	public static void main(String[] args) throws Exception {		Scanner cin = new Scanner(System.in);		int n = cin.nextInt();		int res[] = new int[SIZE + 1];		int i;		for(i = 0;i < SIZE;++ i){			res[i] = 0;		}		res[0] = 1;		while(n > 0){			for(i = 0;i < SIZE;++ i){				res[i] *= 2;			}			for(i = 0;i < SIZE;++ i){				if(res[i] > 9){					res[i + 1] += res[i] / 10;					res[i] %= 10;				}			}			n --;		}		boolean bl = false;		StringBuffer bf = new StringBuffer();		for(i = SIZE;i >= 0;-- i){			if(res[i] != 0 || bl){				bf.append(res[i]);				bl = true;			}		}		System.out.println(bf);	}} 

根据高位低位改进的代码:

/* * Title  :power 2 * From   :http://blog.csdn.net/binfeihan/article/details/6858655 * Time   :2011-10-11 21:10PM  * Author :Eric Zhou,binfeihan * Email  :binfeihan@126.com */import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main {	public static void main(String[] args) throws IOException{		BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));		int n = Integer.parseInt(cin.readLine().trim());		System.out.println(my_power_2(n));		//System.out.println(Long.MAX_VALUE);		//System.out.println(Long.MIN_VALUE);	}	public static StringBuffer my_power_2(int N){		StringBuffer v = new StringBuffer("");		long num[] = new long[2];	    num[1] = 1;	    if(N > 62){	       num[0] = 1;	       num[0] = num[0]<<(N - 62);	       num[1] = num[1]<<62;	       String s = String.valueOf(num[1]);	       int size = 30,i = 0,j = 0;	       long n[] = new long[size + 1];	       //System.out.println(num[0]+" "+s);	       for(i = s.length() - 1;i >= 0;-- i){	    	   n[j ++] = (long) (num[0] * (s.charAt(i) - '0'));	    	   //System.out.println(n[j - 1]);	       }	       for(i = 0;i < size;++ i){	    	   while(n[i] > 9){	    		   n[i + 1] += n[i] / 10;	    		   n[i] %= 10;	    	   }	       }	       boolean bl = false;	       for(i = size;i >= 0;-- i){	    	   if(n[i] != 0 || bl){	    		   v.append(n[i]);	    		   bl = true;	    	   }	       }	    }else{	       num[1] = num[1] << N;	       v.append(String.valueOf(num[1]));	    }   	    return v;	}}

 

作者:binfeihan 发表于2011-10-10 12:20:56
阅读:377 评论:7

转载于:https://www.cnblogs.com/chenlipp/archive/2011/10/10/2219708.html

转载地址:https://blog.csdn.net/weixin_30687587/article/details/94977429 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:IOS-NSNotification(通知)
下一篇:Oracle 从Dump 文件里提取 DDL 语句 方法说明

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月05日 01时12分10秒