Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SumBigNumbersSecondTry
- {
- public class SumBigNumbersSecondTry
- {
- public static void Main()
- {
- string firstInput = ReverseStringNumber(Console.ReadLine().TrimStart('0'));
- string secondInput = ReverseStringNumber(Console.ReadLine().TrimStart('0'));
- StringBuilder result = new StringBuilder();
- for (int firstSymbol = 0; firstSymbol < firstInput.Length; firstSymbol++)
- {
- int firstNumber = int.Parse(firstInput[firstSymbol].ToString());
- StringBuilder currSum = new StringBuilder();
- int remainder = 0;
- for (int secondSymbol = 0; secondSymbol < secondInput.Length; secondSymbol++)
- {
- int secondNumber = int.Parse(secondInput[secondSymbol].ToString());
- int multiplication = firstNumber * secondNumber + remainder;
- int numberToAppend = multiplication % 10;
- remainder = multiplication / 10;
- currSum.Append(numberToAppend);
- if (remainder != 0 && secondSymbol + 1 == secondInput.Length)
- {
- currSum.Append(remainder);
- }
- }
- result = SumTwoNumbers(result.ToString(), currSum.ToString().PadLeft((currSum.Length + firstSymbol), '0'));
- }
- if (result.ToString() == string.Empty || result.ToString().All(c => c == '0'))
- {
- Console.WriteLine(0);
- return;
- }
- Console.WriteLine(ReverseStringNumber(result.ToString()));
- }
- public static StringBuilder SumTwoNumbers(string firstNumber, string secondNumber)
- {
- StringBuilder result = new StringBuilder();
- int smallerLen = Math.Min(firstNumber.Length, secondNumber.Length);
- int remainder = 0;
- for (int currNumber = 0; currNumber < smallerLen; currNumber++)
- {
- int sum = int.Parse(firstNumber[currNumber].ToString()) + int.Parse(secondNumber[currNumber].ToString()) + remainder;
- int numberToAppend = sum % 10;
- remainder = sum / 10;
- result.Append(numberToAppend);
- if (remainder != 0 && (currNumber + 1) == smallerLen && (firstNumber.Length == secondNumber.Length))
- {
- result.Append(remainder);
- }
- }
- if (firstNumber.Length == secondNumber.Length)
- {
- return result;
- }
- for (int currNumber = smallerLen; currNumber < firstNumber.Length; currNumber++)
- {
- int sum = int.Parse(firstNumber[currNumber].ToString()) + remainder;
- int numberToAppend = sum % 10;
- remainder = sum / 10;
- result.Append(numberToAppend);
- if (currNumber + 1 == firstNumber.Length && remainder != 0)
- {
- result.Append(remainder);
- }
- }
- for (int currNumber = smallerLen; currNumber < secondNumber.Length; currNumber++)
- {
- int sum = int.Parse(secondNumber[currNumber].ToString()) + remainder;
- int numberToAppend = sum % 10;
- remainder = sum / 10;
- result.Append(numberToAppend);
- if (currNumber + 1 == secondNumber.Length && remainder != 0)
- {
- result.Append(remainder);
- }
- }
- return result;
- }
- public static string ReverseStringNumber(string numberToReverse)
- {
- StringBuilder toReturn = new StringBuilder();
- for (int currSymbol = 0; currSymbol < numberToReverse.Length; currSymbol++)
- {
- toReturn.Append(numberToReverse[numberToReverse.Length - 1 - currSymbol]);
- }
- return toReturn.ToString();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment