17 大數問題 列印1到最大的n位數

2021-10-23 22:22:39 字數 515 閱讀 8983

1.反轉兩個字串,便於從低位到高位相加和最高位的進製導致和的位數增加;

2.對齊兩個字串,即短字串的高位用『0』補齊,便於後面的相加;

3.從頭遍歷,把兩個正整數的每一位都相加,並加上進製;

4.最高位有進製則補上進製;

5.逆序輸出;

public

static

void

main

(string[

] args)

}else

}stringbuffer res =

newstringbuffer()

;//存放的結果

int c =0;

//進製

for(

int i =

0; i < maxl; i++)if

(c>0)

system.out.

println

(res.

reverse()

);}

劍指17 列印從1到最大的n位數(大數問題)

如果輸入3,則列印1 2 3 一直到最大的三位數999 這是乙個典型的大數問題,因為輸入的n位數,所能表達的數字可能會超過long long型數字。思路是這樣 用陣列來儲存數字,即如果輸入是3則定義乙個3維陣列 定義兩個函式 乙個用來使陣列中的數字加1,每次呼叫該函式,則陣列中的數字會加1,但是要保...

列印從1到最大的n為數

問題舉例 當n為3時,則列印 1 999。實現 void printtomaxofndigits 1 int n int main 上述實現看似可以解決問題,但是如果數字超出了 int甚至超出了long long所能表達的範圍,這樣的話,問題就成了大數問題 大數情況下的 實現 void printn...

列印從1到n位最大值

劍指offer17 輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1 2 3 一直到最大的 3 位數 999。解題思路 返回陣列的長度為10的n次冪減1。n 0,返回null 如果陣列長度很大超出了max int或max long怎麼辦?用字串或陣列模擬加減法...