`
yzd
  • 浏览: 1843333 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

面试题(两个亿位数相乘)

 
阅读更多
<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&gt;=0; i--)</p>
<p><span> </span>{</p>
<p><span> </span>//取出一个数与sumTemp中的每一个相乘</p>
<p><span> </span>for (int j = 0; j&lt;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&lt;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&lt;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]&gt;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&lt;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&lt;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&lt;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&lt;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. **去除小数点**:将两个数转换为整数形式,便于...

    腾讯2017校园招聘 软件测试岗笔试题(1).pdf

    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 分钟,只有一支...

    腾讯笔试题附答案版

    两个数相乘,小数点后位数没有限制,请写一个高精度算法。 **算法提示:** 1. 确定小数点在两个数中的位置`l1`, `l2`。 2. 去掉两个数中的小数点,将它们转换为整数。 3. 使用高精度算法计算两整数相乘的结果。 4. ...

    人教版三年级数学上册期末考试题附答案.pdf

    2. **估算乘法结果** - 第2题通过估算确定两个数相乘的结果范围。 3. **统计图表的作用** - 第3题提到统计表在数据可视化中的作用。 4. **二月的天数** - 第4题纠正关于2月30日的错误概念。 5. **时间单位的读数** -...

    考前必看数字推理题的解题技巧大全技巧归纳.doc

    - **质数列**:质数是只有1和本身两个约数的数,如2,3,5,7等。在数列中寻找连续的质数可以是解决一些题目的关键。 - **合数列**:合数是除了1和它本身外还有其他约数的数,如4,6,8,9等。了解并记住这些基础...

    北师大版三年级数学上册期中考试题(推荐).pdf

    2. 运算顺序与结果:两个表达式的运算顺序不同,但结果相同,正确。 3. 连续自然数的和:三个连续自然数的和一定是3的倍数,正确。 4. 周长与面积:周长是长度,面积是平面大小,两者性质不同,不能比较,错误。 5. ...

    部编人教版三年级数学上册期末考试题【及答案】.pdf

    13. **作图题**:要求在方格纸上画出两个面积为10平方厘米的长方形,可以通过长和宽的不同组合来实现。 14. **应用题**: - (1)计算油箱装满汽油能行驶的距离。 - (2)根据植树问题计算栽树数量。 - (3)购物问题...

    小学三年级数学上册期末考试题(必考题).pdf

    2. 数的位数比较:四位数一定大于三位数,正确。 3. 运算顺序:含有括号的算式要先算括号内的,正确。 4. 等速运动问题:从一楼到六楼不是简单的5倍关系,因为每上一层楼都需要停留,错误。 5. 小数和整数的大小:...

    人教版三年级数学上册期中考试题【及参考答案】.pdf

    在选择题部分,涉及到面积单位的选择、两个长方形面积相等时周长不一定相等的逻辑、千米与圈数的关系、木头锯断后的长度比例以及年龄的估算,这些都是实际生活中的数学应用。 判断题则测试了乘法的性质、除法的结果...

    2021年苏教版三年级数学上册月考考试卷【附答案】.pdf

    这份2021年苏教版三年级数学上册月考考试卷主要涵盖了多个数学知识点,包括基础的算术运算、几何概念、应用题解决以及逻辑推理。以下是对试卷内容的详细解析: 1. **填空题**: - 题目1要求计算4台磨面机6小时加工...

Global site tag (gtag.js) - Google Analytics