1. 程式人生 > >Java程式練習-計算2的N次方

Java程式練習-計算2的N次方

 計算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  :[email protected]
 */
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;
	}
}

相關推薦

Java程式練習-計算2的N次方

 計算2的N次方時間限制: 1000ms記憶體限制: 65536kB描述任意給定一個正整數N(N<=100),計算2的N次方的值。輸入輸入只有一個正整數N。輸出輸出2的N次方的值。樣例輸入5樣例輸出32參考程式碼import java.util.*; public c

按要求編寫Java程式---圓柱體計算

1. 題目描述 (1)定義介面A,裡面包含值為3.14的常量PI和抽象方法double area()。 (2)定義介面B,裡面包含抽象方法void setColor(String c)。 (3)定義介面C,該介面繼承了介面A和B,裡面包含抽象方法void volume()。 (4)定義圓

mysql設定表列的時候把時間設定成String型別,java 程式後面涉及到當前時間和資料庫裡資料的差值計算,怎麼破?

mysql設定表列的時候把時間設定成String型別,java 程式後面涉及到當前時間和資料庫裡資料的差值計算,怎麼破? 如果改資料庫裡面表的列屬性varchar改成time,需要很多地方改進,而且專案已經試運行了,怕出問題? 在java程式中型別轉化很多,String型別可以轉化為date

JavaJava實現一個“計算文字中某個詞出現頻率”的應用程式

一、目的     計算某個詞出現頻率,可以很好的對一篇文章水平的評價提供客觀依據,比如在技術類文章中出現“的”字的頻率太高,說明此文章邏輯不夠嚴謹,本次應用程式的目的就是計算出指定文字中指定詞出現的頻率。   二、程式演示 有如下一個文字檔案w.txt,我們計算“的”字出

java程式中執行緒cpu使用率計算

原文地址:https://www.imooc.com/article/27374 最近確實遇到題目上的剛需,也是花了一段時間來思考這個問題。 cpu使用率如何計算     計算使用率在上學那會就經常算,不過往往計算的是整個程式執行的時間段,現

Android Studio 練習java程式專用

轉載:https://blog.csdn.net/xiaxiayige/article/details/46706949 有時候需要寫點小測試程式,測試方法是否可靠,有效。需要寫個java測試程式測試,Android Studio 上執行java 程式不像Eclipse那樣方便  但是

java程式計算兩個大整數相乘

方法1 :用兩個字串儲存輸入的大整數,然後用第二個字串的每一位去乘第一個字串的數字值,最後將每次的結果錯位相加即可。時間複雜度高O(n^2) 方法2:將兩個大整數X,Y每次分割成兩半,第一個分割成AB,第二個分割成CD。所以最後結果XY=(A*10^n/2 +B)(C*10^m/2+D);進

如何優化Java程式:十進位制轉十六進位制(2的31次方以內的正整數)

程式碼如下: package com.java; import java.util.Scanner; public class TestTransform {  public static void main(String[] args) {     Scanner

通過Java程式計算個人所得稅

    工資個稅的計算公式為:     應納稅額=(工資薪金所得 -“五險一金”-扣除數)×適用稅率-速算扣除數     扣除標準:個稅按3500元/月的起徵標準算   程式碼例項

JAVA版CORBA程式練習

要求: 1)要求編寫實現顯示“Hello,World!+班級+中文姓名”字串 2)編寫實現連加、連減和加減混合等數學++/- -運算,並進行測試。 一、JAVA版CORBA程式1——HelloWorld 實現詳解: 1 編寫IDL介面HelloWorld.idl:

java程式】圖形面積和周長計算

package test1; import java.util.Scanner; class circle{ double r,a,b,h; public double zfx(double a) {

編寫一個Java 應用程式計算兩個大整數的和、差、積和商,並計算一個大整數的因 子個數(因子中不包括1 和大整數本身)。

1 package ex6_2; 2 import java.math.BigInteger; 3 4 public class BigintegerExample { 5 public static void main(String[] args) { 6

java程式之出差補助計算

    某公司為其它公司做技術服務,人員按照客戶要求出差外派。補貼是在人員出差前預先派發的。需要計算出每個人的補貼數值,並且需要派出日期先後排序,以便於安排進行統一借款並進行補貼的派發。如果派出日期相同,則按照補貼金額從少到多排序。     按照出差時間長短,補貼的標準是

JAVA 第一個小專案 桌球遊戲 (桌球小程式練習

今天裝了Eclipse  學習第一個小程式‘’   #載入視窗   #畫視窗 import java.awt.*;import javax.swing.*; public class BallGame extends JFrame{ Image ball = Toolkit.ge

JAVA 第一個小專案 桌球遊戲 (桌球小程式練習2)最終版本

import java.awt.*;import javax.swing.*; public class BallGame2 extends JFrame{ Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png"); Ima

Java集合框架練習-計算表示式的值

最近在看《演算法》這本書,正好看到一個計算表示式的問題,於是就打算寫一下,也正好熟悉一下Java集合框架的使用,大致測試了一下,沒啥問題。 import java.util.*; /* * * 用來計算表示式 * for example: 1+2*3*(4+3*1)

Java程式練習(二)

一、四位隨機驗證碼 package lx2; import java.util.Random; public class Demo5 { public static void main(String[] args) { char[] arr={'s','b','

Java開發練習1,打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153 是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方

打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153 是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。 public class

JAVA程式計算圓的周長面積

import java.util.Scanner;//匯入輸入庫檔案包 public class Circle { public static void main(String[] args) { final float pi=3

Java程式計算三角形/圓形/矩形的周長和麵積

題目:用Java編寫一個計算隨意給定值的三角形/圓形/矩形的周長和麵積 程式碼如下: 檔名:Shape.java /** * 抽象類Shape 是其他三個形狀的父類 * 其他三個類要繼承重寫getArea()和getPerimeter()方法