私の仕事は、非常に大きな数値を別の数値に加えて結果を印刷することです。 は、ここでは出力として1000年を与える必要があり、私の実装ですが、それは0000それがどのように動作するかをC#2つの本当に大きな数字の合計
を書き込みます: ちょうど/ 10残りの桁の10%のための2つの数が等しい長さを有する 場合。結果の長さが元の文字数より大きい場合は、最後の剰余を出力配列の最後の要素に追加します。
2つの数値の長さが異なる場合: 交差部分を合計し、余り(temp内の)を相対補数に加算します。
どうしたのですか?
static int[] SumOfBigNumbers(int[] firstNumber, int[] secondNumber)
{
int temp = 0;
int maxLength = (Math.Max(firstNumber.Length, secondNumber.Length));
int minLength = (Math.Min(firstNumber.Length, secondNumber.Length));
int[] output = new int[maxLength + 1];
//sum of equal part
for (int counter = 0; counter < minLength; counter++)
{
output[counter] = (firstNumber[counter] + secondNumber[counter] + temp) % 10;
temp = (firstNumber[counter] + secondNumber[counter] + temp)/10;
}
//exceptions add the temp to the bigger array
if (temp!=0)
{
//if first array is bigger than the second
if (firstNumber.Length > secondNumber.Length)
{
for (int i = minLength; i < maxLength + 1; i++)
{
output[i] = (firstNumber[i] + temp) % 10;
temp = (firstNumber[i] + temp)/10;
}
}
//if second array is bigger than the first
else if (firstNumber.Length < secondNumber.Length)
{
for (int i = minLength; i < maxLength + 1; i++)
{
output[i] = (secondNumber[i] + temp) % 10;
temp = (secondNumber[i] + temp)/10;
}
}
//if two number has equal length but there is temp left
else
{
output[maxLength] = temp;
}
}
return output;
}
static void Main()
{
int[] firstArray = new int[3] { 0, 0, 5 };
int[] secondArray = new int[3] { 0, 0,5 };
int[] output = SumOfBigNumbers(firstArray, secondArray);
foreach (var i in output)
{
Console.WriteLine(output[i]);
}
}
*タスクをコピーすると編集が改善されます。2つの非常に長い正の整数の合計を計算する方法を記述します。数値は配列の桁で表され、最後の桁(1のもの)は配列0のインデックスに格納されます。最大10,000桁までの長さのすべての数値に対してメソッドが機能するようにします。
(.aspxのhttps://msdn.microsoft.com/en-us/library/system.numerics.biginteger(V = vs.110))[ 'BigInteger']かもしれない、あなたがこれまで見ているものです –
それはちょうど私ですが、 '{0,0,5} + {0,0,5}'が '{1,0,0,0}'になる理由を理解できません。それが '{5,0,0} + {5,0,0}'ならば私には意味があります。 – Filburt
多分私はその仕事を誤解しました。 0番目の要素(1)0,1番目(10番目)の要素0,2番目の要素(数百)などと読む。このロジックでは、後で反転することができる出力が0001になります。 –