Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Numerics;
- using System.Text;
- namespace _06.SumBigNumbers
- {
- class Program
- {
- static void Main(string[] args)
- {
- //тъй като са много големи числата, и не мога да ползвам BigInteger, ще трябва да работя със стринг
- string num1 = Console.ReadLine();
- string num2 = Console.ReadLine();
- if (num1.Length < num2.Length) //проверка на дължината
- {
- num1 = num1.PadLeft(num2.Length,'0'); //изравняваме двата стринга с долепяне на символа '0'
- }
- else
- {
- num2 = num2.PadLeft(num1.Length, '0');
- }
- //до тук двата стринга са равни
- //Console.WriteLine(num1);
- //Console.WriteLine(num2);
- int sum = 0;
- int reminder = 0;
- int num = 0;
- StringBuilder sb = new StringBuilder();
- for (int i = num1.Length - 1; i >= 0; i--) //няма значение дали пиша тук num1 or num2. PadLeft ги направи равни.
- {
- //char имат номера в ASCII таблицата. Не ми трябват номерата а абсолютните стойности, което е - 48
- sum = num1[i] - 48 + num2[i] - 48+ reminder;
- //полученото трябва да го добавяме в нов стринг и да манипулираме ремайндъра
- //добавянето става чрез Append.Накрая получения стринг ще трябва да го обърна
- num = sum % 10; //за случаите когато суматора е двуцифрено число, на мен ми трябва само единиците и едно наум
- if (sum > 9)
- {
- reminder = 1;
- }
- else
- {
- reminder = 0;
- }
- sb.Append(num); //в новия стринг се добавя само едното число от единиците
- if (i == 0 && reminder == 1) //ако върти последния цикъл и в reminder има 1
- {
- sb.Append(reminder);
- }
- }
- //sb се прави във стринг, защото не е .
- Console.WriteLine(sb.ToString().TrimEnd('0').ToCharArray().Reverse().ToArray()); //махат се излишни нули ако има, обръща се
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement