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. **去除小数点**:将两个数转换为整数形式,便于...
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小时加工...