下午所有,
前面提到的网站显示了一个问题:
然后,8)编写一个计算两个非常长的正数之和的方法 整数。数字表示为数组和数字 最后一个数字(那些)存储在索引0的数组中 方法适用于长度不超过10,000位的所有数字。
解决方案和指南指出:
读者必须实现自己的方法来计算非常的总和 大数字。位置零的数字将保留数字;数字 在第一个位置将保持十分之一,等等。当两个非常 大数字即将计算,其总和将是 等于(firstNumber [0] + secondNumber [0])%10,其他的十分之一 side将等于(firstNumber [1] + secondNumber [1])%10 + (firstNumber [0] + secondNumber [0])/ 10等等。
有人可以帮我理解问题是什么。
我应该将长整数的每个数字放入数组吗?
提前致谢。
答案 0 :(得分:3)
不,您要编写的方法的输入将是两个数组。这有点模糊,但我猜输出也是一个数组。例如,数字12345将表示为数组:
int[] number = {5, 4, 3, 2, 1};
所以你的方法需要采用两个这样的数组,比如数字92344和22344:
int[] number1 = {4, 4, 3, 2, 9};
int[] number2 = {4, 4, 3, 2, 2};
然后将两个数字相加作为问题陈述,输出如下数组:
int[] numberOutput = {8, 8, 6, 4, 1, 1};
代表114688
答案 1 :(得分:1)
练习的想法是熟悉数组。这个特殊的例子让你将长数字分成数组,其中最后一个数字(那些位置)位于数组中位置0,数字位于数组位置1,依此类推。
数学部分很简单......通过对每个数字进行计算,找出结果中的每个数字。以数字125和248为例。
Array1将是[5,2,1],而Array2将是[8,4,2],那么你将拥有一个Result数组。
要获得将这两个数字相加的结果的数字,您会说:
(Array1[0] + Array[1]) Mod 10
这将导致3(5 + 8 = 13,13 Mod 10为3)。结果[0] = 3。
要获得结果的十位数,您会说:
((Array1[1] + Array2[1]) Mod 10) / ((Array1[0] + Array2[0]) / 10)
这将导致7(2 + 4 = 6,6 Mod 10是6. 5 + 8 = 13,13 / 10 = 1.3,但是当转换为整数时,它是1. 6 + 1 = 7)。结果[1] = 7。
要获得数百个,你将重复数十的计算,但是增加一个数组位置:
((Array1[2] + Array[2]) Mod 10) / ((Array1[1] + Array2[1]) / 10)
所以,是的。你需要将每个数字向后放入一个数组,然后循环遍历它们,第一次使用这些数字的计算,每次使用第二次计算。