2016-09-18 32 views
-1

我在c中工作,如標題所述,我有一個struct這是一個表示極大數的雙向鏈表unsigned long longs的節點。劃分兩個非常大的數字表示爲無符號長整數的鏈表

我需要實現他們的基本算術,並已完成+,-,*但我仍然需要劃分。我已經看到大數字表示爲鏈表的算法的答案,但我的問題有另一部分,溢出。

我目前正在長除法,我的問題是,當第一個數字(unsigned long long)不整除再有就是它被帶入一個兩位數(二unsigned long long S)號的餘數。我不知道如何在保持精確度的同時將大數表示爲ull s除以ull。只有在第二個數字平均分配第一個數字的情況下才會調用除法功能。

不知道還有什麼其他信息我需要給,但我卡在這裏,任何直覺會有所幫助,謝謝。

編輯:我很抱歉我對StackOverflow的新鮮感,但對於那些好奇的我最終解決問題的方式是將數字視爲二進制,並一點一點地進行分割。該解決方案消除了我遇到的問題。

+0

整數除法?長時間分工直到你設法得到別的東西。 –

+6

1)C不是C++不是C. 2)編輯行4704451311,水晶球說有你所有的問題。如果沒有這樣的線路,您可能需要閱讀[問]併發布[mcve]。 – Olaf

+6

您需要提供的信息是[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve),它顯示了您嘗試的內容。 –

回答

1

一個簡單的解決方案可能是 - 考慮你已經 - 在兩個步驟中執行所有的部門。基本上你就好像你的長長的無符號整數只是長的無符號整數

這使得你必須工作的鏈長增加一倍,並且需要的操作數增加了四倍,但是如果這不是問題,那麼你可以將lu的其餘部分加上下一個lu分割llu,這再次給你一個不到一個lu的餘數。

換句話說,因爲你需要的東西比LLU較大,但並沒有什麼,做你的整個工作,陸,再有對於此操作提供更大的東西 - 在LLU

相關問題