c#中非常长的正整数数组
本文关键字:整数 数组 非常 | 更新日期: 2023-09-27 18:18:53
下午好,
http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-9-methods/_Toc362296455
前面提到的网站显示问题:
8)编写一个计算两个非常长的正数之和的方法整数的数字。数字表示为数组数字和最后一位数(个位数)存储在索引0处的数组中。使方法适用于长度不超过10,000位的所有数字。
解决方案和指导方针然后声明:
阅读器必须实现自己的方法来计算very的和大数字。位置0上的数字将保留1;数字第一个位置保留十分位,以此类推。当两个非常大数即将被计算,它们的和将是一等于(firstNumber[0] + secondNumber[0]) % 10,其余的十分之一side将等于(firstNumber[1] + secondNumber[1]) % 10 +(firstNumber[0] + secondNumber[0])/10,以此类推。
有没有人能帮我理解一下这个问题问的是什么?
我应该把一个长int的每一个数字在一个数组?
不,您将编写的方法的输入将是两个数组。这是一个有点模糊,但我猜输出也将是一个数组。例如,数字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
练习的目的是让您熟悉数组。在这个特殊的示例中,您将长数字分解为数组,其中最后一位数字(个位)位于数组的位置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). result [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). Result[1] = 7.
要得到百位,您需要对十位重复计算,但是向上移动一个数组位置:
((Array1[2] + Array[2]) Mod 10) / ((Array1[1] + Array2[1]) / 10)
所以,是的。您需要将每个数字向后放入数组中,然后循环遍历它们,第一次使用1的计算,此后每次使用第二次计算。