# 北軟104 problemB 大數計算機 ###### tags: `北軟104` ## 題目 說明: 1. 輸入的運算元與輸出的運算結果可能會超過整數型態的定義範圍,也就是會有溢位(overflow)的可能性,你的程式要可以處理超過整數型態的定義範圍的大數。 2. 以 + 代表加法, 以 - 代表減法,以 * 代表乘法 3. 輸入說明 : window 介面,可以輸入兩個正整數,最長為 20 個位數,可以顯示加法、減法與乘法的結果。 4. 輸出說明 : 兩個正整數的運算結果,總長度不超過 40 個位數 5. 參考範例 : ![](https://i.imgur.com/VzGlDNU.png) ![](https://i.imgur.com/8gwUAth.png) ![](https://i.imgur.com/Hy0eVmj.png) ![](https://i.imgur.com/HG9aIJC.png) ![](https://i.imgur.com/q1nxn6f.png) ![](https://i.imgur.com/bdyjpkE.png) 6. 解題說明: 1. 第一步驟可以宣告兩個線性陣列(linear array)分別儲存這兩個運算元,每個陣列的元素用來儲存一個十進制的位元,例如宣告一個陣列 int a[3]來儲存 123,其中 a[2] = 1,a[1] = 2, a[0] = 3。再宣告另一個陣列 int b[3]來儲存 789,其中 b[2] = 7, b[1] = 8, b[0]= 9。 2. 第二步驟將兩個陣列的每個元素分別加起來,放到另外一個陣列 int c[3],則 c[2] = 8, c[1] = 10, c[0] = 12。 3. 第三步驟將陣列 c 的每個元素進行「逢十進位」的正規化,則 c[0] = 2, c[1] = 1,c[2] =9。 4. 第四步驟從索引高到低輸入陣列 c 的數值為 912。 5. 減法運算要注意兩個運算元的大小。 7. 評分標準 1. 加法運算功能正確 5 分 2. 減法運算功能正確 5 分 3. 乘法運算功能正確 10 分 4. Clear 功能正確 5 分 ## 想法 這題很貼心地給了大數運算的演算法,不過,C#有內建的大數運算。 請將參考加入System.Numerics,並且加入using。 假設有兩個大數相加,textBox1中的文字為第一個大數,textBox2中的文字為第二個大數,輸出到textBox3,則: ```csharp= BigInteger bi1 = BigInteger.Parse(textBox1.Text); BigInteger bi2 = BigInteger.Parse(textBox2.Text); textBox3.Text = (bi1 + bi2).ToString(); ``` 這樣是不是很簡單呢?