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

2021-08-14 07:52:02 字數 647 閱讀 4641

如果輸入3,則列印1、2、3、一直到最大的三位數999

這是乙個典型的大數問題,因為輸入的n位數,所能表達的數字可能會超過long long型數字。

思路是這樣:

用陣列來儲存數字,即如果輸入是3則定義乙個3維陣列 。

定義兩個函式:

乙個用來使陣列中的數字加1,每次呼叫該函式,則陣列中的數字會加1,但是要保證該陣列不溢位,即不超過999.

乙個用來列印陣列。因為最開始的時候陣列儲存的是三位0,但是高位的0不能列印。

package jianzhi;

public class jianzhi_17

}public static boolean increment(int number)

if(sum<10) else else

//當此前number中儲存的是[0,0,9],在執行到這裡時,sum=10,將carry=1,sum=0,number[i]=0;

//還將進行第二個for迴圈,向前計算一步,直到sum<10,不在發生進製

}} return isoverflow;

} public static void print(int number) {

boolean isbegining=true;

for(int i=0;i

劍指 17 列印從1到最大的n位數

題目描述輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999.思路分析 考查大數的表示與計算.將分為3個模組。增長數字。列印數字。面試題17.列印從1到最大的n位數 include include using namespace std bool...

17 列印從1到最大的n位數

輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 說明 題目要求列印 從1至最大的n位數的列表 因此需考慮以下兩個問題 最大的n位數 記為end 和位數n的關係 例如最大的1位...

劍指offer17 列印從1到最大的n位數

題目 輸入數字n,按順序列印從1到最大的n為十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999。看到這個問題之後,最容易想到的辦法就是先求出最大的n位數,然後用乙個迴圈從1開始逐個列印。於是很容易寫出以下 void print1tomaxofndigits 1 int n for i...