面试题-----大数相乘问题 傷城~ 2022-05-20 09:50 160阅读 0赞 在计算机中存储数据的大小是有限的,当我们需要表示一个很大的数的时候应该很自然就能想到用字符串。字符串相乘问题在笔试面试中也比较常见,直接上思想: 我们可以借助于可动态调整大小的数据结构(vector,string,deque)模拟实现数字的乘法操作。对于普通的乘法,我们知道m位数和n位数相乘,最后的结果位数在区间\[m+n-1,m+n\]内。 举个例子:25\*23 ![这里写图片描述][70] 就是标准的手动乘法运算,只不过通常是用第一个数字去乘第二个数字中的每一位,然后将结果相加。就是左边这种情况,而右边这种情况实际上就是**23\*25** 。我们使用两个嵌套的for循环,从每个输入数字的末尾开始。利用一个预先分配好空间的string保存部分结果。然后每次将部分部分结果进行累加。需要注意的一个特殊情况是,在最后需要去除掉结果最开始多余的0 class Solution { public: string multiply(string num1, string num2) { int size1 = num1.size(); int size2 = num2.size(); if(size1 == 0 || size2 == 0) return num1; if(num1 == "0"||num2 == "0") //判断如果其中一个字符串为0,直接返回0 return "0"; //因为两个数字相乘结果的位数不会超过size1+size2,所以开辟这么大的空间 string s(size1 + size2, '0'); for(int i = size1 - 1; i >= 0; i--) { int mul = 0;//保存进位 for(int j = size2 - 1; j >= 0; j--) { //计算两个数字中某一位的相乘结果并加上进位和之前保存的结果 int tmp = (s[i + j + 1] - '0') + (num1[i] - '0') * (num2[j] - '0') + mul; s[i + j + 1] = tmp - mul * 10;//先保存不考虑进位时候的结果 mul = tmp / 10;//更新进位 } s[i] += mul; //保存一轮计算完的最后一个进位 } if(s[0] == '0')//去除结果开头的0 s = s.substr(1, s.size()); return s; } }; 还是不太理解的,举个例子调试一把就懂!!! [70]: /images/20220520/8c9dcb35c2dd415bb7b0489e2e6c9b38.png
相关 大数相乘 一、背景 最近在看算法的时候发现了一个问题,我们都知道方法的形参是要指定类型的,假如有以下方法 public int example(int a,int b){ 傷城~/ 2022年09月30日 13:55/ 0 赞/ 209 阅读
相关 大数相乘 参考地址:[http://www.cnblogs.com/heyonggang/p/3599857.html][http_www.cnblogs.com_heyonggang_ 悠悠/ 2022年08月20日 06:29/ 0 赞/ 189 阅读
相关 大数相乘 无意中看到一个华为面试题,使用代码计算[1234567891011121314151617181920\2019181716151413121110987654321][123 系统管理员/ 2022年08月11日 20:29/ 0 赞/ 194 阅读
相关 大数相乘问题 [算法题-大数相乘问题][-] 今天在网上看到一个大数相乘的问题,题目是这样的:输入两个整数,要求输出这两个数的乘积。输入的数字可能超过计算机内整形数据的存储范围。 约定不等于承诺〃/ 2022年08月05日 10:25/ 0 赞/ 158 阅读
相关 大数相乘 题目:请使用代码计算1234567891011121314151617181920\2019181716151413121110987654321。 答: ![复制代码][ Bertha 。/ 2022年08月05日 08:54/ 0 赞/ 205 阅读
相关 大数相乘 在这之前我们先来了解一下Java 中每种基本数据类型所占存储空间的大小。其中 1Byte = 8bit。 <table> <tbody> <tr> <th> 朱雀/ 2022年06月02日 02:36/ 0 赞/ 253 阅读
相关 大数相乘 设X和Y是n位的二进制整数,现在要计算X\Y的结果 将a和b分为两段,每段长均为总长的1/2, ![20180329214901958][] 拼搏现实的明天。/ 2022年05月28日 05:06/ 0 赞/ 215 阅读
相关 大数相乘 题目 编写两个任意位数的大数相乘的程序,给出计算结果。比如: > 题目描述: 输出两个不超过100位的大整数的乘积。 > 输入: 输入两个大整数,如1234567 今天药忘吃喽~/ 2022年05月23日 11:23/ 0 赞/ 336 阅读
相关 面试题-----大数相乘问题 在计算机中存储数据的大小是有限的,当我们需要表示一个很大的数的时候应该很自然就能想到用字符串。字符串相乘问题在笔试面试中也比较常见,直接上思想: 我们可以借助于可动态调整大小 傷城~/ 2022年05月20日 09:50/ 0 赞/ 161 阅读
相关 大数相乘 def fun(num1,num2): num1 type str num2 type str a = map(int, 落日映苍穹つ/ 2021年10月24日 01:48/ 0 赞/ 330 阅读
还没有评论,来说两句吧...