Advertisement
DaniPasteBin

Untitled

Jun 24th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.86 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Numerics;
  4. using System.Text;
  5.  
  6. namespace _06.SumBigNumbers
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //тъй като са много големи числата, и не мога да ползвам BigInteger, ще трябва да работя със стринг
  13.             string num1 = Console.ReadLine();
  14.             string num2 = Console.ReadLine();
  15.  
  16.             if (num1.Length < num2.Length)  //проверка на дължината
  17.             {
  18.                 num1 = num1.PadLeft(num2.Length,'0'); //изравняваме двата стринга с долепяне на символа '0'
  19.             }
  20.             else
  21.             {
  22.                 num2 = num2.PadLeft(num1.Length, '0');
  23.             }
  24.             //до тук двата стринга са равни
  25.             //Console.WriteLine(num1);
  26.             //Console.WriteLine(num2);
  27.  
  28.             int sum = 0;
  29.             int reminder = 0;
  30.             int num = 0;
  31.             StringBuilder sb = new StringBuilder();
  32.             for (int i = num1.Length - 1; i >= 0; i--) //няма значение дали пиша тук num1 or num2. PadLeft ги направи равни.
  33.             {
  34.                 //char имат номера в ASCII таблицата. Не ми трябват номерата а абсолютните стойности, което е  - 48
  35.                 sum = num1[i] - 48 + num2[i] - 48+ reminder;
  36.                 //полученото трябва да го добавяме в нов стринг и да манипулираме ремайндъра
  37.                 //добавянето става чрез Append.Накрая получения стринг ще трябва да го обърна
  38.                
  39.                 num = sum % 10;  //за случаите когато суматора е двуцифрено число, на мен ми трябва само единиците и едно наум
  40.                 if (sum > 9)
  41.                 {
  42.                     reminder = 1;
  43.                 }
  44.                 else
  45.                 {
  46.                     reminder = 0;
  47.                 }
  48.                 sb.Append(num); //в новия стринг се добавя само едното число от единиците
  49.  
  50.                 if (i == 0 && reminder == 1) //ако върти последния цикъл и в reminder има 1
  51.                 {
  52.                     sb.Append(reminder);
  53.                 }
  54.  
  55.             }
  56.             //sb се прави във стринг, защото не е .
  57.            Console.WriteLine(sb.ToString().TrimEnd('0').ToCharArray().Reverse().ToArray()); //махат се излишни нули ако има, обръща се
  58.  
  59.  
  60.            
  61.         }
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement