<p></p>
<p>public class Text2{</p>
<p><span> </span>//1234567890</p>
<p><span> </span>public static void main(String[] args){</p>
<p><span> </span>//a,b两个任意十位数</p>
<p><span> </span>int[] a=new int[]{1,2,3,4,5,6,7,8,9,0};</p>
<p><span> </span>int[] b=new int[]{1,2,3,4,5,6,7,8,9,0};</p>
<p><span> </span></p>
<p><span> </span>int[] sum=new int[21];<span> </span>//结果</p>
<p><span> </span>int[] sumTemp=new int[21];<span> </span>//临时结果</p>
<p><span> </span></p>
<p><span> </span>//将b数据放入到临时结果中</p>
<p><span> </span>swap(sumTemp,b);</p>
<p><span> </span></p>
<p><span> </span>for (int i = a.length-1; i>=0; i--)</p>
<p><span> </span>{</p>
<p><span> </span>//取出一个数与sumTemp中的每一个相乘</p>
<p><span> </span>for (int j = 0; j<sumTemp.length; j++)</p>
<p><span> </span>{</p>
<p><span> </span>int swap=a[i]*sumTemp[j];</p>
<p><span> </span>sumTemp[j]=swap;</p>
<p><span> </span>whileAdd(sumTemp,j);</p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//将相乘的结果放入结果sum中</p>
<p><span> </span>add(sum,sumTemp);</p>
<p><span> </span></p>
<p><span> </span>//重新将b数据放入到临时结果中</p>
<p><span> </span>swap(sumTemp,b);</p>
<p><span> </span></p>
<p><span> </span>//移位,也就是乘i这个数所在的位数</p>
<p><span> </span>move(sumTemp,a.length-1-i);</p>
<p><span> </span></p>
<p><span> </span>//再把这个sumTemp放入到结果中</p>
<p><span> </span>add(sum,sumTemp);</p>
<p><span> </span></p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//输出结果</p>
<p><span> </span>show(sum);</p>
<p><span> </span></p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//交换</p>
<p><span> </span>public static void swap(int[] a,int[] b)</p>
<p><span> </span>{</p>
<p><span> </span>for (int i = 0; i<a.length; i++)</p>
<p><span> </span>{</p>
<p><span> </span>a[i]=0;</p>
<p><span> </span>}</p>
<p><span> </span>for (int i = 0; i<b.length; i++)</p>
<p><span> </span>{</p>
<p><span> </span>a[a.length-1-i]=b[b.length-1-i];</p>
<p><span> </span>}<span> </span></p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//递归相加</p>
<p><span> </span>public static void whileAdd(int[] n,int index)</p>
<p><span> </span>{</p>
<p><span> </span>if(n[index]>9)</p>
<p><span> </span>{</p>
<p><span> </span>n[index-1]=n[index-1]+(n[index]/10);</p>
<p><span> </span>n[index]=n[index]%10;</p>
<p><span> </span>whileAdd(n,index-1);</p>
<p><span> </span>}</p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//相加</p>
<p><span> </span>public static void add(int[] sum,int[] a)</p>
<p><span> </span>{</p>
<p><span> </span>for (int i = 0; i<a.length; i++)</p>
<p><span> </span>{</p>
<p><span> </span>int swap=a[a.length-1-i] + sum[sum.length-1-i];</p>
<p><span> </span>sum[sum.length-1-i]=swap;</p>
<p><span> </span>whileAdd(sum,sum.length-1-i);</p>
<p><span> </span>}</p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//移位</p>
<p><span> </span>public static void move(int[] n,int index)</p>
<p><span> </span>{</p>
<p><span> </span>int len=0;<span> </span>//找到最高位</p>
<p><span> </span>for (int i = 0; i<n.length; i++)</p>
<p><span> </span>{</p>
<p><span> </span>if(n[i]!=0)</p>
<p><span> </span>{</p>
<p><span> </span>len=i;</p>
<p><span> </span>break;</p>
<p><span> </span>}</p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//从最高位开始移</p>
<p><span> </span>for (int i = len; i<n.length; i++)</p>
<p><span> </span>{</p>
<p><span> </span>n[i-index]=n[i];</p>
<p><span> </span>n[i]=0;</p>
<p><span> </span>}</p>
<p><span> </span>}</p>
<p><span> </span></p>
<p><span> </span>//显示结果</p>
<p><span> </span>public static void show(int[] n)</p>
<p><span> </span>{</p>
<p><span> </span>for (int i = 0; i<n.length; i++)</p>
<p><span> </span>{</p>
<p><span> </span>System.out.print(n[i]);</p>
<p><span> </span>}</p>
<p><span> </span>System.out.println();</p>
<p><span> </span>}</p>
<p>}</p>
<p></p>
分享到:
相关推荐
根据给定的信息,我们可以深入探讨这道华为面试题——“两个长数字相乘”的实现细节与背后的算法原理。 ### 题目解析 题目要求计算两个长整数相乘的结果,这里的“长整数”指的是那些无法直接用现有的数据类型(如...
题目要求编写一个高精度算法来实现两个数的相乘,并且不限制小数点后的位数。这通常需要处理大数运算,可能涉及到字符串操作或使用特殊的大数库。 知识点四:逻辑和策略问题 有A、B、C、D四个人过桥的问题,这是一...
经过分析发现,这些式子都是三个数相乘的结果,并且这三个数的和等于它们乘积的个位数加上十位数。例如:1×1×11=11,1+1+11=13,而乘积11的个位数加十位数也是1+1=2。根据这一规律,可以得出2×2×9=36符合条件。 ...
- **题目描述**:设计一个算法,实现两个高精度数(小数点后位数不受限制)的乘法。 - **解答思路**: 1. **记录小数点位置**:首先记录两个数中小数点的位置。 2. **去除小数点**:将两个数转换为整数形式,便于...
3. 两个数相乘,小数点后位数没有限制:可以使用高精度算法。 4. 将 A,B 两链表的元素交叉归并:可以使用链表的 merge 操作。 面试题 1. 定义一个宏,比较两个数 a、b 的大小:可以使用 #define Max(a,b) ( a/b)?a...
3. 操作系统:两个数相乘,小数点后位数没有限制,请写一个高精度算法。 4. 编程语言:写一个病毒。 5. 逻辑推理:有 A、B、C、D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10 分钟,只有一支...
3. **题目要求**:两个数相乘,小数点后位数没有限制,请写一个高精度算法。 - **解析**:传统的乘法算法只能处理整数或有限的小数位数的情况。对于任意精度的乘法,需要使用特殊的算法来处理。 - **实现思路**:...
- 使用了两个变量`f1`和`f2`来保存当前的两个数。 - 通过一个循环计算出每一个月的兔子数量。 - 每个月的兔子数量等于上个月和上上个月的兔子数量之和。 - **扩展知识点**:递归与迭代的区别、空间复杂度优化等。...
两个数相乘,小数点后位数没有限制,请写一个高精度算法。 **算法提示:** 1. 确定小数点在两个数中的位置`l1`, `l2`。 2. 去掉两个数中的小数点,将它们转换为整数。 3. 使用高精度算法计算两整数相乘的结果。 4. ...
2. **估算乘法结果** - 第2题通过估算确定两个数相乘的结果范围。 3. **统计图表的作用** - 第3题提到统计表在数据可视化中的作用。 4. **二月的天数** - 第4题纠正关于2月30日的错误概念。 5. **时间单位的读数** -...
- **质数列**:质数是只有1和本身两个约数的数,如2,3,5,7等。在数列中寻找连续的质数可以是解决一些题目的关键。 - **合数列**:合数是除了1和它本身外还有其他约数的数,如4,6,8,9等。了解并记住这些基础...
2. 运算顺序与结果:两个表达式的运算顺序不同,但结果相同,正确。 3. 连续自然数的和:三个连续自然数的和一定是3的倍数,正确。 4. 周长与面积:周长是长度,面积是平面大小,两者性质不同,不能比较,错误。 5. ...
13. **作图题**:要求在方格纸上画出两个面积为10平方厘米的长方形,可以通过长和宽的不同组合来实现。 14. **应用题**: - (1)计算油箱装满汽油能行驶的距离。 - (2)根据植树问题计算栽树数量。 - (3)购物问题...
- **题目描述**:设计一个算法,用于计算两个大数相乘的结果,小数点后的位数不受限制。 - **算法思路**: 1. 记录两个数的小数点位置`l1`和`l2`。 2. 去掉两个数中的小数点,将它们转换为整数。 3. 计算乘积`c =...
2. 数的位数比较:四位数一定大于三位数,正确。 3. 运算顺序:含有括号的算式要先算括号内的,正确。 4. 等速运动问题:从一楼到六楼不是简单的5倍关系,因为每上一层楼都需要停留,错误。 5. 小数和整数的大小:...
在选择题部分,涉及到面积单位的选择、两个长方形面积相等时周长不一定相等的逻辑、千米与圈数的关系、木头锯断后的长度比例以及年龄的估算,这些都是实际生活中的数学应用。 判断题则测试了乘法的性质、除法的结果...
这份2021年苏教版三年级数学上册月考考试卷主要涵盖了多个数学知识点,包括基础的算术运算、几何概念、应用题解决以及逻辑推理。以下是对试卷内容的详细解析: 1. **填空题**: - 题目1要求计算4台磨面机6小时加工...