最近在刷hackerRank中的一道题,其中用到了大数相乘,搞了好久,始终在最后一个test case里面time out了,java或python自带大数运算,但是数长超过64位的数运算c++要自己写,下面是总结研究过的几种方案。
1按照手算的方法
对两个数的每一位进行相乘,逢10进位,最后进行相加,每一个位的数字可以用String或 char []来存储,时间复杂度n * m
2按照复数的计算方法
此方法来源于Stanford一个教授S.Dasgupta写的一本书《Algorithms》,此方法是这样的:
复数相乘: