第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

2的十萬(wàn)次冪怎么求?用Java做

2的十萬(wàn)次冪怎么求?用Java做

富國(guó)滬深 2019-03-01 10:28:50
這是一道作業(yè)。因?yàn)槠胀ǖ那蠓▋?nèi)容會(huì)溢出,無(wú)法正常輸出。所以回答前務(wù)必確定能正常輸出。提示可以用數(shù)組大神求教一下,這是老師布置的作業(yè),用Math.pow()或for循環(huán)10萬(wàn)遍,都不能輸出,int,long存不了那么大的數(shù)。我是初學(xué)者,求教怎么算。
查看完整描述

7 回答

?
狐的傳說(shuō)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

高精度算法

原理簡(jiǎn)單來(lái)說(shuō)就是用數(shù)組來(lái)存數(shù)字,然后手工模擬豎式運(yùn)算。
網(wǎng)上資料很多的,隨便搜搜就知道了。

查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
翻翻過(guò)去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

因?yàn)閷?duì)于Java不熟悉,且沒(méi)有Java環(huán)境,我給你一個(gè)思路,定義一個(gè)長(zhǎng)度為10000的數(shù)字,2作為初值傳入數(shù)組的最后一位,然后兩層循環(huán),第一層循環(huán)為10000次,內(nèi)部循環(huán)為數(shù)組存入字符的內(nèi)容循環(huán),對(duì)于存入內(nèi)容的數(shù)組,每一位*2,如果大于10,就將進(jìn)位存入前一位數(shù)組即可。結(jié)果集可以直接打印數(shù)組或者轉(zhuǎn)成字符串輸出。 我本想提供計(jì)算結(jié)果的,但是長(zhǎng)度太長(zhǎng),超出評(píng)論范圍了,我給你下計(jì)算結(jié)果的長(zhǎng)度,讓你用來(lái)做驗(yàn)證,計(jì)算結(jié)果的長(zhǎng)度為30103位。

查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果目的不是測(cè)試的,一種更基本的辦法是用BigIneteger。例如:

BigInteger.valueOf(2).pow(100_000);
查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

實(shí)現(xiàn)了一個(gè),但是效率不高:

import java.util.Arrays;

public class Application {

    public static void main(String[] args) {
        // 計(jì)算2的10萬(wàn)次方
        int[] num  = new int[]{1};
        for (int i = 0; i < 100000; i++) {
            //做10萬(wàn)次乘以2的計(jì)算
            num = timesTwo(num);
        }
        System.out.println("result= "+Arrays.toString(num)
                .replace(", ","")
                .replace("[","")
                .replace("]",""));
    }


    public static int[] timesTwo(int[] num) {
        //對(duì)最新一個(gè)結(jié)果,從最低位開(kāi)始每一位都乘以2,并存儲(chǔ)其值
        for (int i = num.length -1; i >= 0 ; i--) {
            num[i] *= 2;
        }
        //從最低位開(kāi)始檢查每一位是否溢出,并處理溢出
        for (int i = num.length -1; i >=0 ; i--) {//判斷是否大于等于10
            //如果溢出
            if (num[i] >= 10) {
                //設(shè)置當(dāng)前位的值
                num[i] -= 10;
                //如果當(dāng)前位剛好是最高位
                if (i==0){
                    //擴(kuò)大數(shù)組
                    int[] temp = new int[num.length+1];
                    //復(fù)制舊數(shù)組數(shù)據(jù)
                    System.arraycopy(num,0,temp,1,num.length);
                    //最高位為1
                    temp[0] = 1;
                    //引用新擴(kuò)大后的數(shù)組
                    num = temp;
                }else{
                    //當(dāng)前位的左邊一位加1
                    num[i-1] += 1;
                }
            }
        }
        return num;
    }

}
查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

用數(shù)組模擬一個(gè)二進(jìn)制數(shù)字,冪次就往數(shù)組最后插0。

最后得出一個(gè)二進(jìn)制的數(shù)組。然后二進(jìn)制數(shù)組轉(zhuǎn)十進(jìn)制字符串。

查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

初學(xué)者被布置這樣的作業(yè),老師的意思應(yīng)該不是讓你自己實(shí)現(xiàn)一個(gè)方法。
import java.io.File;
import java.io.PrintStream;
import java.math.BigInteger;

public class A {

public static void main(String[] args) {
    try {
        String s = new BigInteger("2").pow(100000).toString();
        //打印到d盤(pán)num.txt中,因?yàn)閿?shù)字太長(zhǎng)控制臺(tái)打印不下
        System.setOut(new PrintStream(new File("d:\\num.txt")));
        System.out.print(s);
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

}

查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
慕無(wú)忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

關(guān)閉吧。。。笑尿

查看完整回答
反對(duì) 回復(fù) 2019-03-01
  • 7 回答
  • 0 關(guān)注
  • 897 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)