對大數的處理

2021-09-01 07:57:59 字數 819 閱讀 7782

問題:輸入數字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...