C#中非常长的正整数数组

时间:2014-08-19 17:39:20

标签: c# arrays long-integer

下午所有,

http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-9-methods/#_Toc362296455

前面提到的网站显示了一个问题:

  

8)编写一个计算两个非常长的正数之和的方法   整数。数字表示为数组和数字   最后一个数字(那些)存储在索引0的数组中   方法适用于长度不超过10,000位的所有数字。

然后,

解决方案和指南指出:

  

读者必须实现自己的方法来计算非常的总和   大数字。位置零的数字将保留数字;数字   在第一个位置将保持十分之一,等等。当两个非常   大数字即将计算,其总和将是   等于(firstNumber [0] + secondNumber [0])%10,其他的十分之一   side将等于(firstNumber [1] + secondNumber [1])%10 +   (firstNumber [0] + secondNumber [0])/ 10等等。

有人可以帮我理解问题是什么。

我应该将长整数的每个数字放入数组吗?

提前致谢。

2 个答案:

答案 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)

所以,是的。你需要将每个数字向后放入一个数组,然后循环遍历它们,第一次使用这些数字的计算,每次使用第二次计算。