問題:輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1、2、3一直到999。
解題思路:首先注意n沒有規定範圍,意味著n可以輸入很大的值,那麼這種情況下,無論時用整型還是長整型都會溢位。所以需要考慮大數問題。可以通過字串來解決大數問題。因為數字最大是n位的,需要用乙個n+1長度的字串(字串最後以為是結束符『\0』),字串中每個字元都是『0』 ~ 『9』之間的某乙個字元,用來表示數字中的乙個。當實際的數字不夠n位的時候,在字串的前半部分補0.具體做法:首先把字串中的麼乙個數字初始化位『0』,然後每一次為字串表示的數字加1,再列印出來。
bool increment(char *number)
}else
}return isoverflow;
}void printnumber(char *number)
}printf("\t");
}void print1tomax(int n)
delete number;
}
改進:如果在數字前面補0,就會發現n位所有十進位制數其實就是n個從0到9的全排列。也就是說,我們把數字的每一位都從0到9排列一遍,就得到了所有的十進位制數。只不過排在前面的0不列印出來罷了。
void print1tomaxrecur(char *number, int len, int idx)
for(int i=0; i < 10; i++)
}void print2tomax(int n)
delete number;
}
printnumber實現如一種方法。 java 對大資料的處理
最近做了乙個專案,資料量每次處理在兩百萬左右,這裡記錄一下最近開發時處理大量資料的思路,主要思路是將大資料化小,多次處理,不足之處還請指出。讀取檔案內容 while s br.readline null 清空集合 listbean.clear string value s.trim 將讀取到的內容放...
大數的處理
一般情況下,如果涉及到大數問題一般都會採用字元陣列來解決,在使用字元陣列時,需要注意的問題 1.首先宣告整數陣列,陣列中的每個元素都當做單獨的數字進行運算.2.陣列的初始化,根據計算型別的不同初始化操作也不同 3.每個陣列元素進行運算完畢後,必須進行進製處理,進製時原有數字與進製 a i 1 a i...
大數的處理
參考 ac 如下 include include using namespace std 大數相乘 string bigintegerplus string res,string plusn int len1 res.length len2 plusn.length for int i len2 1...