永发信息网

java求两个1000位数的乘积

答案:2  悬赏:60  手机版
解决时间 2021-04-28 07:29
java求两个1000位数的乘积
最佳答案
给你一个思路,具体实现自己完成
你可以定义两个1000长度的数组a,b来存这两个乘数
然后定义一个2001长度的数组c来存储这个结果。
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
c[i+j+1]=(a[j]*b[i])/10;
c[i+j]=c[i+j]+(a[j]*b[i])%10;
c[i+j+1]=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
for(int k=2001;k>=0;k--){
System.out.print(c[k]);
}
上面是大概的思路,记住c[]在使用之间每个元素都要赋值为0
c[i+j+1]=(a[j]*b[i])/10;表示a的j位与b的i位相乘的十位上的数字存到c对应的上一位表示进位
c[i+j]=c[i+j]+(a[j]+b[i])%10;c[i+j]可能有下面进位上来的,在加上a的j位与b的i位相乘的个位上的数字就是此时c对位位置上的得数
c[i+j+1]=c[i+j]/10;c[i+j]=c[i+j]%10;
为了防止c在上一步[c[i+j]=c[i+j]+(a[j]+b[i])%10;]后又发生了进位,所以在执行此步
for(int k=2001;k>=0;k--){
System.out.print(c[k]);
}
表示从高位依次打印出此数
自己想办法不显示高位为0的情况
大体思路就是如此
具体细节自己进行优化
全部回答
用 BigInteger 类或BigDecimal类来解决。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
布兰妮现在怎么样
自由幻想 玲珑塔换什么最值我是YS 换秋装什么
现在去九寨沟好玩吗,2016年10月,九寨沟这段
我的农场打不开为什么啊,只能加载50%
松野木崎,怎么写(用日文)读(找几个相似音代替
又新中学地址有知道的么?有点事想过去
如果你告诉你女朋友你想吸烟!她不管 她还在
QQ飞车里悬挂系统是不是越改车越滑?
日本的那部恐怖片最恐怖?
为什么DNF密保卡使用时间最多不超过一个月!
发明也是设计吗?
寻求好的WOW UI
英语翻译As well as stresses due to the eco
一面对女孩子脸蛋通红
文美玉器地址在什么地方,想过去办事
推荐资讯
柏拉图式的爱情是什么样子的?
厦门眼科医院买药一定要药方吗
骨骼闭合就不能长高了吗
现在魔兽世界可以角色分离吗?能把角色从老账
国亮广告装饰这个地址在什么地方,我要处理点
申通快递(怀宁县清河乡农业站西南)在什么地方
怀孕七个月了,有点咳嗽,带痰,有3天了,可
怎样才能让一个人变得无脸无皮,天下无敌??
e63水货下载什么阅读器?
索尼的MDR-XB20EX耳机怎么样
人类的鞋柜里,永远少了哪一双鞋?
孟家洼地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?