当前位置: 首页 > 面试题库 >

作业:如何写自己的大数乘法?

樊浩初
2023-03-14
问题内容

在我的项目中,我必须处理大数字的乘法(大于java.long),该乘法一直盯着我自己的BigNumberint[]。基本上我需要实现这样的事情:

    157 x
    121 y
   ----
    157 result1
   314  + result2
  157   + result3
 ------
 18997  finalResult

但是我该如何实施呢?

我考虑过用零(3140、15700)扩展result2,3并将其添加。但是首先我需要以某种方式在y的每个数字之间导航,然后乘以x的每个数字。


问题答案:

使用对角线方法。创建一个数组,然后将每个数字彼此相乘,然后在每个单元格中填写数字。

36 x 92

       3     6
    +-----+-----+
    | 2 / | 5 / |
9   |  /  |  /  |
    | / 7 | / 4 |
    +-----+-----+
    | 0 / | 1 / |
2   |  /  |  /  |
    | / 6 | / 2 |
    +-----+-----+

在每个对角线上加上数字。从最低有效数字(在右下方)移动到最高数字(在左上方)。

2                                                                    2 (least-significant)
(6 + 1 + 4) = 11 (make this 1, and carry the 1 to the next digit)    1
(5 + 7 + 0 + 1(carried)) = 13 (make this 3, and carry the 1)         3
2 + 1(carried) = 3                                                   3 (most-significant)

答案是3312。

对您的数字进行二维排列。用个位数的乘法一起填充数组。

像上面一样,编写一些逻辑以刮除对角线。

这应该适用于任意大的数字(只要您还有剩余的内存)。



 类似资料:
  • 关于rust导入函数的问题,我的工程格式如下: src/main.rs src/api/api.rs api.rs 里有一个函数: pub async fn root() {} 问题是:我该如何在main.rs下调用这个root,我试过各种文档上的方法都不行。求助各位 知道怎么导入

  • 页面域名为abc.cn,嵌入iframe域名为qwe.com。 嵌入的iframe如何读写自己域名(.qwe.com)下的cookie呢? 使用document.cookie 嵌入时打印出来是空的,不嵌入时读取正常。

  • 问题内容: 我正在尝试编写自己的睡眠函数,相当于在Go中使用。 这是代码。第一次尝试: 第二次尝试: 两者都返回错误,有人可以向我解释如何编写等同于使用的睡眠函数,如果可能的话,何时使用通道? 问题答案: 返回一个频道。在指定的持续时间后,将在通道上发送一个值。 因此,只需从返回的通道接收一个值,接收就会阻塞,直到发送该值为止: 您的错误: 在第一个示例中: 已经声明,因此不能使用Short变量声

  • 目标 写出一个loader,实现在html文件内容前面添加个人签名、以及自动替换掉敏感词汇的功能,当对应的词汇文件修改时,页面会自动刷新。该loader需能够协作其他loader,实现链式调用。 挑战 写出一个loader,要求每个模块文件依赖于各不相同的敏感词汇json文件。 知识点 1、node module:一个loader就是一个npm包,输出一个function; 2、npm publi

  • 对于简单的定制操作,我们或许可以通过使用layers.core.Lambda层来完成。但对于任何具有可训练权重的定制层,你应该自己来实现。 这里是一个Keras层应该具有的框架结构(1.1.3以后的版本,如果你的版本更旧请升级),要定制自己的层,你需要实现下面三个方法 build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表`self.trainable_weigh

  • 对于简单的定制操作,我们或许可以通过使用layers.core.Lambda层来完成。但对于任何具有可训练权重的定制层,你应该自己来实现。 这里是一个Keras2的层应该具有的框架结构(如果你的版本更旧请升级),要定制自己的层,你需要实现下面三个方法 build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表`self.trainable_weights中。其他的属性