【问题标题】:Array of very long positive integers in C#C#中非常长的正整数数组
【发布时间】:2014-08-19 17:39:19
【问题描述】:

下午好,

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

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

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

解决方案和指南然后指出:

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

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

我是否应该将 long int 的每个数字放入一个数组中?

提前致谢。

【问题讨论】:

  • 为什么投反对票?我的问题有什么问题?我没有其他人要问,对我来说重要的是在我继续尝试完成之前理解问题。

标签: c# arrays long-integer


【解决方案1】:

不,您将编写的方法的输入将是两个数组。这有点模糊,但我猜输出也将是一个数组。例如,数字 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

【讨论】:

    【解决方案2】:

    练习的目的是让自己熟悉数组。这个特定的示例让您将长数字分解为数组,其中最后一个数字(个位)在数组中的位置 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)
    

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

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多