.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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д