社区
非技术区
帖子详情
有2个很大的数相乘(大到目前的数字无法表示的数),求实现思想
jhdxhj
2011-03-02 10:45:38
有2个很大的数相乘(大到目前的数字无法表示的数),求实现思想
...全文
167
11
打赏
收藏
有2个很大的数相乘(大到目前的数字无法表示的数),求实现思想
有2个很大的数相乘(大到目前的数字无法表示的数),求实现思想
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heidi784060468
2011-11-25
打赏
举报
回复
用数组的话是蛮力算法,不是优解。最好的是用分而治之法,基本思想是给定X和Y都是n位整数,计算乘积XY。分治算法思想,将n位X和Y分成2段,每段n/2位。则X分为AB两段,Y分为CD两段。
qiudong_5210
2011-03-03
打赏
举报
回复
难道是
-∞*∞
vrhero
2011-03-03
打赏
举报
回复
[Quote=引用 7 楼 bluceyoung 的回复:]
难道8个字节的ulong都存不下?
那你就分解一下,比如1234000*4567,可以分解成1234*4567*1000,然后就只算前两个数相乘,就像科学计数法似的
[/Quote]
8个字节的整数才多大?太小了...在某些领域如数学、天文等简单小到可以忽略不计...
.NET 4.0的System.Numerics.BigInteger结构表示无固定长度的任意大的有符号整数,只受内存限制...但其实它的原理仍然是字节数组存储,乘法是分治法转换为加法...
不过“目前的数字无法表示的数”是不存在的...数学上有“无限大”,没有“无法表示”...
hztltgg
2011-03-03
打赏
举报
回复
xxxxx
X yyyyy
--------
aaaaa 一个个集合
aaaaa0
aaaaa00
.......
--------
bbbbbbb 集合的同一位置相加
小学教乘法的时候不就是这样做么,如果其中的一个数xxx很小,用一个整数能表示的话,就更简单了
江溪浣君
2011-03-03
打赏
举报
回复
难道8个字节的ulong都存不下?
那你就分解一下,比如1234000*4567,可以分解成1234*4567*1000,然后就只算前两个数相乘,就像科学计数法似的
PitTroll
2011-03-02
打赏
举报
回复
大整数相乘,大学算法中学过的,俺都忘的差不多了。好像用分治法可以解决的吧。
jhdxhj
2011-03-02
打赏
举报
回复
[Quote=引用 3 楼 whb147 的回复:]
一般都是用数组,或者集合之类的存储数据
我去年去掌上通面试的时候就问的这个,
[/Quote]
能否说的详细点呢?
whb147
2011-03-02
打赏
举报
回复
一般都是用数组,或者集合之类的存储数据
我去年去掌上通面试的时候就问的这个,
hahanyang
2011-03-02
打赏
举报
回复
考虑下转成List或数组,循环运算后在数组中输出
打酱油的
2011-03-02
打赏
举报
回复
直接A*B算不出?
大
数
相乘
java_大
数
相乘
——java版
之前面试的时候被问到两个
很大
很大
的
数
相乘
在java中怎么把它算出来,显然不能直接
相乘
,当时我只回答出来了用BigInteger,然而不是最好的答案。大
数
相乘
的核心
思想
是将
数
字
转化为字符串,然后逐位
相乘
转化最后才得出结果。先上一段代码:public static void main(String[] args) {String str1 = "23451515412151511212";String...
字符串
相乘
(大
数
相乘
) python
实现
首先讲解 两个小技巧 list 反转 reverse >>> l=[1,2,3,4,5,6] >>> l.reverse() >>> l [6, 5, 4, 3, 2, 1] str 反转 [::-1] >>> >>> s="abcde" >>&
大
数
乘法——大
数
问题
大
数
乘法基本
思想
与大
数
的加法减法一样,但是乘运算与加减还是有
很大
区别的,根据下图,我们可以看到两个
数
相乘
,既是两个
数
每一位的
相乘
,之后再相加,并且我们可以知道,两个
数
相乘
的结果的位
数
不会大于两个
数
位
数
之和(例如:9*9=81,位
数
为1+1=2,说明个位
数
相乘
最大位
数
不会超过2位,其他同理),乘法运算中我们需要进位,与加法不同的是,加法只需要判断最后一位有没有大于10,而乘法中每一次都需要判断。而...
大
数
相乘
大
数
相乘
大整
数
乘法,就是乘法的两个乘
数
比较大,最后结果超过了整形甚至长整形的最大范围,此时如果需要得到精确地结果,常规的乘法就不能得到正确的结果了。此时需要算法
思想
了,对,就是分治算法,将乘
数
“分割“,将大整
数
计算转换为小整
数
计算。 咱先来个小点的
数
乘法,然后逐步找出大
数
乘法的解法: 1、 一位乘法就是乘法口诀,没什么可说的。 2、 说说2位乘法 12*23 = 408 分割成一位
数
字
IC经典电路(2)——经典乘法器的
实现
(乘法器简介及Verilog
实现
)
数
字
电路中乘法器是一种常见的电子元件,其基本含义是将两个
数
字
相乘
,并输出其乘积。与加法器不同,乘法器可以
实现
更复杂的运算,因此在
数
字
电路系统中有着广泛的应用。乘法器的主要用途是在
数
字
信号处理、计算机科学以及其他
数
字
电路应用中进行精确的
数
字
乘法运算。例如,在
数
字
信号处理中,乘法器通常用于
数
字
滤波器中的系
数
乘法;在计算机科学中,它们被用于执行浮点运算;而在其他
数
字
电路应用中,乘法器也可以
实现
时域和频域的变换等。在
数
字
电路系统中,乘法器的重要性
无法
被忽视。
非技术区
7,774
社区成员
63,122
社区内容
发帖
与我相关
我的任务
非技术区
.NET技术 非技术区
复制链接
扫一扫
分享
社区描述
.NET技术 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章