如果輸入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...