關於大數問題的個人理解

2021-09-12 17:05:22 字數 936 閱讀 1633

大數問題也不是第一次接觸過,但是只是零零碎碎的做過幾道題,並沒有很系統的整理過,並且自己的處理上多多少少存在很多瑕疵,所以這裡做乙個整理;

一、大數的儲存:

相應的,大數儲存應該將每一位儲存在陣列之中,但是需要注意的時,陣列儲存時從0開始,所以大數儲存應該時數字的逆向儲存;

之前自己時正向儲存,所以會在計算進製上造成麻煩,逆向儲存可以很好的儲存和管理進製問題;

`struct bign};`

這裡使用了建構函式,來保證結構體創立的時候能夠第一時間初始化;

對於初始化讀入數字的時候,我們也需要對數字進行逆序處理;

struct bign

};

所以對於不同的兩個數字,我們比較的方式可以有如下定義:

如果長度不一樣,則長的大;

如果長度相同,則從高位開始逐個比較(也就是反向列舉),從而找出數字大的;

int compare(bign a,bign b)

}

注意點有兩處:

1.這裡的借位是相鄰高位-1,本位+10相減的操作;

2.由於可能有高位相減=0,但是len任然計數的可能性存在,所以要從高位開始,除去高位的前導0;

四、高精度和低精度乘法運算:

這裡所謂的高精度就是採用陣列儲存的大數,而低精度就是使用int儲存的數字;

假設,陣列儲存的數有三位,int儲存的的數字有二位,和普通小學數學乘法不同的是,我們採用的是int保留的兩位,逐個對陣列儲存的三位進行乘積,這樣就會進行三次運算,而不是手寫運算的兩次;

bign multi(bign a,int b)

return c;

}

這裡需要注意的是高位仍然需要除去0操作;

在包括0的情況下,商的位數應該和被除數的位數一一對應,這也就是我們的邊界判別條件之一;

關於大數問題的個人理解

大數問題也不是第一次接觸過,但是只是零零碎碎的做過幾道題,並沒有很系統的整理過,並且自己的處理上多多少少存在很多瑕疵,所以這裡做乙個整理 一 大數的儲存 相應的,大數儲存應該將每一位儲存在陣列之中,但是需要注意的時,陣列儲存時從0開始,所以大數儲存應該時數字的逆向儲存 之前自己時正向儲存,所以會在計...

關於NSRunloop的個人理解

今天看到了nsrunloop,其實之前也有看了關於nsrunloop的內容,在這裡想簡單的就個人的理解總結一下。其實自己在開發的過程當中,還沒有更多的涉及到nsrunloop的功能。總的來說,nsrunloop就是類似於windows的訊息機制。他的存在是給執行緒增加事件處理機制。對於多執行緒開發而...

個人關於指標的理解

指標是什麼?如何理解指標?因為指標是抽象的,所以這裡我把它擬物化,這樣解釋也許跟容易懂。指標的專業解釋是 指標是記憶體單元的編號。說明 以下的黑方框都代表乙個位元組 1 對於記憶體。我們一般認為記憶體的基本單位是位元組,記憶體空間由很多位元組組成的。記憶體可以儲存資料,所以我們把每個位元組當做是乙個...