計算2的N次方
創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè)、電商網(wǎng)站制作開發(fā)、小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
時間限制: 1000ms內(nèi)存限制: 65536kB
描述
任意給定一個正整數(shù)N(N=100),計算2的N次方的值。
輸入
輸入只有一個正整數(shù)N。
輸出
輸出2的N次方的值。
樣例輸入
5
樣例輸出
32
參考代碼
[java] view plain copy print?
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);
}
}
根據(jù)高位低位改進(jìn)的代碼:
[java] view plain copy print?
/*
* Title :power 2
* From :
* 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;
}
}
“java”的平方表達(dá)式是pow (double x,double y)。
函數(shù)原型:double pow (double x,double y)。
功能:返回x的y次方。
如要在java中求9的平方,可寫作double pow(double 9,double 9)。
平方是一種運算,比如,a的平方表示a×a,簡寫成a2,也可寫成a×a(a的一次方乘a的一次方等于a的2次方),例如4×4=16,8×8=64,平方符號為2。
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程 。
Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
lang 包下的math類 的那些靜態(tài)方法 經(jīng)常用的要看一下
pow(double a, double b) 返回第一個參數(shù)的第二個參數(shù)次冪的值
pow(2,x-1);
java中通常進(jìn)行數(shù)學(xué)運算的東西都在Math類中,求函數(shù)的冪次方就是Math類中的pow方法:public static double pow(double?a,?double?b),?返回第一個參數(shù)的第二個參數(shù)次冪的值。
例如求2的3次方,代碼如下:
public class test {
public static void main(String[] args) {
double a= Math.pow(2, 3);
}
}
運行結(jié)果為8
擴展資料:
Math 類包含用于執(zhí)行基本數(shù)學(xué)運算的方法,如初等指數(shù)、對數(shù)、平方根和三角函數(shù)。
與 StrictMath 類的某些數(shù)學(xué)方法不同,并非 Math 類所有等價函數(shù)的實現(xiàn)都定義為返回逐位相同的結(jié)果。此類在不需要嚴(yán)格重復(fù)的地方可以得到更好的執(zhí)行。
默認(rèn)情況下,很多 Math 方法僅調(diào)用 StrictMath 中的等價方法來完成它們的實現(xiàn)。建議代碼生成器使用特定于平臺的本機庫或者微處理器指令(可用時)來提供 Math 方法更高性能的實現(xiàn)。這種更高性能的實現(xiàn)仍然必須遵守 Math 的規(guī)范。
實現(xiàn)規(guī)范的質(zhì)量涉及到兩種屬性,即返回結(jié)果的準(zhǔn)確性和方法的單調(diào)性。浮點 Math 方法的準(zhǔn)確性根據(jù) ulp(units in the last place,最后一位的進(jìn)退位)來衡量。對于給定的浮點格式,特定實數(shù)值的 ulp 是包括該數(shù)值的兩個浮點值的差。
當(dāng)作為一個整體而不是針對具體參數(shù)討論方法的準(zhǔn)確性時,引入的 ulp 數(shù)用于任何參數(shù)最差情況下的誤差。
如果一個方法的誤差總是小于 0.5 ulp,那么該方法始終返回最接近準(zhǔn)確結(jié)果的浮點數(shù);這種方法就是正確舍入。一個正確舍入的方法通常能得到最佳的浮點近似值;然而,對于許多浮點方法,進(jìn)行正確舍入有些不切實際。
相反,對于Math 類,某些方法允許誤差在 1 或 2 ulp 的范圍內(nèi)。非正式地,對于 1 ulp的誤差范圍,當(dāng)準(zhǔn)確結(jié)果是可表示的數(shù)值時,應(yīng)該按照計算結(jié)果返回準(zhǔn)確結(jié)果;否則,返回包括準(zhǔn)確結(jié)果的兩個浮點值中的一個。對于值很大的準(zhǔn)確結(jié)果,括號的一端可以是無窮大。
除了個別參數(shù)的準(zhǔn)確性之外,維護不同參數(shù)的方法之間的正確關(guān)系也很重要。
因此,大多數(shù)誤差大于 0.5 ulp 的方法都要求是半單調(diào)的:只要數(shù)學(xué)函數(shù)是非遞減的,浮點近似值就是非遞減的;同樣,只要數(shù)學(xué)函數(shù)是非遞增的,浮點近似值就是非遞增的。并非所有準(zhǔn)確性為 1 ulp 的近似值都能自動滿足單調(diào)性要求。
參考資料:
如:
//創(chuàng)建一個BigInteger對象可以傳其他類型具體請查JDK_API文檔。
BigInteger bigInt = new BigInteger("2");
//調(diào)用bigInt中pow方法參數(shù)表示你想求多少次方。
BigInteger bigPow = bigInt.pow(2);
//最后將得到的結(jié)果轉(zhuǎn)成Long類型,注意這里是向下轉(zhuǎn)型,可以會出現(xiàn)異常。
long bigLong = bigPow.longValue();
Math.pow(2,n)。
詳細(xì)解釋:
這不就是多個2相乘么,
public class test1 {
public static void main(String[] args) throws Exception {
int a = 1;
int n = 3;
for (int i = 0; i n; i++) {
a = a*2;
}
System.out.println(a);
}
}