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

看板java作者 (B.r)時間19年前 (2007/01/05 01:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
     最近在寫一題程式 還不太懂 經過老師講解之後有比較了解      題目的本意 是要以長整數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++) { 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 請問一下大家 該如何避免多進了那個位? 而延伸至long max * long max 又該注意什麼細節呢? 想跟大家討論討論 先謝謝大家了 -- 有違板規 請告知 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.183.194 ※ 編輯: BearWu 來自: 59.113.183.194 (01/05 01:14)
文章代碼(AID): #15dJDKeX (java)
文章代碼(AID): #15dJDKeX (java)