.NET 4.x Деление длинного числа на короткое - C#

Узнай цену своей работы

Формулировка задачи:

Нужно реализовать деление двух больших чисел (произвольно больших), конкретно

деление длинного числа на короткое (это приоритет)

и длинного на длинное.

Вся фишка задания в том , что испольовать BigInteger нельзя

. Как я понял , нужно считать числа как строки и работать с двумя массивами чисел (разбить строку допустим на 9 цифр - int и делить столбиком). Прошу помочь именно с реализацией этого всего, не до конца понял, как это сделать. Если не так сказал - подкорректируйте, пожлуйста, и помогите. Заранее спасибо!

Решение задачи: «.NET 4.x Деление длинного числа на короткое»

textual
Листинг программы
            string a = "1234567890123456799";
            string b = "1000";
 
            int first, second = Convert.ToInt32(b);
 
            if (Int32.TryParse(a, out first))
            {
                Console.WriteLine("Целая часть: {0}", first / second);
                Console.WriteLine("Остаток: {0}", first % second);
                return;
            }
 
            var num = a.Select(c => c - '0').ToArray();
            List<int> result = new List<int>();
 
            int x = 0, tens, t;
            foreach (int digit in num)
            {
                x = x*10 + digit;
 
                // Переписываем 0 в результат
                if (x == 0)
                {
                    result.Add(0);
                    continue;
                }
                
                if (x >= second)
                {
                    tens = x/second;
                    result.Add(tens);
                    t = x;
                    x -= tens*second;
 
                    // Добавляем нули
                    var zeroes = (int) (Math.Log10(t) - Math.Log10(x) - 1);
                    if (zeroes > 0) result.AddRange(Enumerable.Repeat(0, zeroes));
                }
            }
 
            Console.WriteLine("Целая часть: {0}", String.Join("", result));
            Console.WriteLine("Остаток: {0}",x);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы