作者BearWu (B.r)
看板java
标题[问题] 长整数乘上长整数
时间Fri Jan 5 01:11:48 2007
最近在写一题程式 还不太懂 经过老师讲解之後有比较了解
题目的本意 是要以长整数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)