Re: [問題] 長整數乘上長整數

看板java作者 (痞子軍團團長)時間19年前 (2007/01/05 01:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《BearWu (B.r)》之銘言: :      最近在寫一題程式 還不太懂 經過老師講解之後有比較了解 :      題目的本意 是要以長整數max 乘上 長整數max (以陣列儲存) : 老師先提了演算法 後來試著寫的時候 以9*99算出來的答案不是正確的 : 小弟的程式如下: :      public class multi : { : public static void main(String[] args) : { : int[] a ={9,9}; : int[] b ={9,9,9}; : int[] c = new int[5]; : int d = 0; //進位數 : int i; : for (i = 0 ; i <= 2 ; i++) 明明你的程式碼就是 9 * 999 [指] : { : c[i] = (a[0] * b[i] + d) % 10; : d = (a[0] * b[i] + d) / 10; : } : } : } : 可是這樣子跑出會變成991 原因是i = 2的時候 :      d 還有被執行一次 也就是81 + 9 變成c[2} = 9 : 但實際上不是991而是891 : 請問一下大家 該如何避免多進了那個位? 我是不知道你的程式法怎麼印出結果的 只不過,我強烈懷疑你明明是 9*999 但是你卻只印出後三位數... 不然,程式碼本身應該沒有問題阿... : 而延伸至long max * long max 又該注意什麼細節呢? 大概就只有效率問題吧? [等著被毆] : 想跟大家討論討論 先謝謝大家了 ==== 此篇文章為不符合舉發條款的站內儲存 -- 侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw 眾目睽睽無心顫 個人版:telnet://legend.twbbs.org 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.194.156
文章代碼(AID): #15dJae_6 (java)
文章代碼(AID): #15dJae_6 (java)