`
qm4050
  • 浏览: 77509 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

public class Text2{

//1234567890

public static void main(String[] args){

//a,b两个任意十位数

int[] a=new int[]{1,2,3,4,5,6,7,8,9,0};

int[] b=new int[]{1,2,3,4,5,6,7,8,9,0};

int[] sum=new int[21]; //结果

int[] sumTemp=new int[21]; //临时结果

//将b数据放入到临时结果中

swap(sumTemp,b);

for (int i = a.length-1; i>=0; i--)

{

//取出一个数与sumTemp中的每一个相乘

for (int j = 0; j<sumTemp.length; j++)

{

int swap=a[i]*sumTemp[j];

sumTemp[j]=swap;

whileAdd(sumTemp,j);

}

//将相乘的结果放入结果sum中

add(sum,sumTemp);

//重新将b数据放入到临时结果中

swap(sumTemp,b);

//移位,也就是乘i这个数所在的位数

move(sumTemp,a.length-1-i);

//再把这个sumTemp放入到结果中

add(sum,sumTemp);

}

//输出结果

show(sum);

}

//交换

public static void swap(int[] a,int[] b)

{

for (int i = 0; i<a.length; i++)

{

a[i]=0;

}

for (int i = 0; i<b.length; i++)

{

a[a.length-1-i]=b[b.length-1-i];

}

}

//递归相加

public static void whileAdd(int[] n,int index)

{

if(n[index]>9)

{

n[index-1]=n[index-1]+(n[index]/10);

n[index]=n[index]%10;

whileAdd(n,index-1);

}

}

//相加

public static void add(int[] sum,int[] a)

{

for (int i = 0; i<a.length; i++)

{

int swap=a[a.length-1-i] + sum[sum.length-1-i];

sum[sum.length-1-i]=swap;

whileAdd(sum,sum.length-1-i);

}

}

//移位

public static void move(int[] n,int index)

{

int len=0; //找到最高位

for (int i = 0; i<n.length; i++)

{

if(n[i]!=0)

{

len=i;

break;

}

}

//从最高位开始移

for (int i = len; i<n.length; i++)

{

n[i-index]=n[i];

n[i]=0;

}

}

//显示结果

public static void show(int[] n)

{

for (int i = 0; i<n.length; i++)

{

System.out.print(n[i]);

}

System.out.println();

}

}

分享到:
评论

相关推荐

    华为的一道面试题,两个长数字相乘

    根据给定的信息,我们可以深入探讨这道华为面试题——“两个长数字相乘”的实现细节与背后的算法原理。 ### 题目解析 题目要求计算两个长整数相乘的结果,这里的“长整数”指的是那些无法直接用现有的数据类型(如...

    腾讯面试题

    题目要求编写一个高精度算法来实现两个数的相乘,并且不限制小数点后的位数。这通常需要处理大数运算,可能涉及到字符串操作或使用特殊的大数库。 知识点四:逻辑和策略问题 有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