|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
|
Длинная арифметика: деление с остатком двух чисел, находящихся в двусвязном списке03.05.2017, 14:10. Показов 8121. Ответов 35
Метки нет (Все метки)
Доброго времени суток.
Подскажите, как реализовать деление с остатком двух чисел, находящихся в двусвязном списке, узлы которого - цифры. Оба числа - положительные. Первое что пришло в голову - пока число x меньше числа y Производить умножение y на i, и увеличивать i на единицу. Когда же будет больше - отнять от получившегося исходный x. Но вот с реализацией как-то всё очень плохо.. P.S. Использовать шаблоны - нельзя. ООП - тоже. Вообще, по заданию нужно найти НОД. Я же взял алгоритм с вычитанием. В итоге числа 99999999999 и 9 по понятным причинам считает очень долго. Если можно как-то улучшить мою уже реализованную идею - буду благодарен. Нужны только идеи ![]() За ранее благодарен
0
|
|
| 03.05.2017, 14:10 | |
|
Ответы с готовыми решениями:
35
Длинная арифметика, деление чисел Длинная арифметика. Реализовать деление и умножение целочисленных чисел Сложение двух чисел (длинная арифметика) |
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
|||||||
| 06.05.2017, 18:27 [ТС] | |||||||
0
|
|||||||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
||
| 06.05.2017, 18:52 [ТС] | ||
|
Есть Add равный единице. Сдвигаю его влево. При сдвиге влево, число Add становится равно нулю? ( 1<<) = 0. Последующий сдвиг еще добавляется разряд?? И получается 00 я правильно понимаю? Мне не понятно, при сдвигах нули добавляются или просто из числа убирать разряды.
0
|
||
|
|
|||||||||
| 06.05.2017, 19:06 | |||||||||
1 << 1 == 2. Если у Вас десятичные цифры, то сдвиг влево на 1 цифру равносилен умножению на 10.Добавлено через 5 минут Кроме того, обратите внимание, что у меня в while (1) сравнение строгое, а в (2) нестрогое.
1
|
|||||||||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
||||
| 06.05.2017, 19:09 [ТС] | ||||
|
В обоих случаях от большего отнимается меньшее. Если на вход поступает вначале меньшее, а потом большее - то делаю swap.
0
|
||||
|
|
||
| 06.05.2017, 19:11 | ||
|
Вы говорите, числа храните списками цифр
Reminder и Devider изменят и A и B. Вы принципиально избегаете возможностей C++?
0
|
||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
|
| 06.05.2017, 19:14 [ТС] | |
|
0
|
|
|
|
|||||||
| 07.05.2017, 11:24 | |||||||
|
Добавлено через 15 секунд Вообще, в стиле разделения ответственности, было бы написать например функции:
1
|
|||||||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
||||||||||||
| 07.05.2017, 14:08 [ТС] | ||||||||||||
При вводе 100 и 2 (когда остатка нету) то зацикливается на
Я так понимаю что проблему нужно искать внутри моего сложения и вычитания. Насколько плохо, что при вычитании A и B, я конечный результат записываю в A? И то, что если A < B, я делаю их swap? Ну и аналогично со сложением.
0
|
||||||||||||
|
|
||||
| 07.05.2017, 14:39 | ||||
-=. Здесь подходит.Minus, LongSumLong.
0
|
||||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
|||||||
| 07.05.2017, 14:54 [ТС] | |||||||
|
Вычитание если вызвать из main, и вычесть два числа - ровно как и сложение - работает.
Если остаток равен нулю, зацикливания теперь - нету, всё хорошо, возвращает как и нужно - 0. Но почему-то при делении по модулю 121 на 4, дает ответ 3. Если просто вызвать minus в main при A = 12000000, B = 3 - всё хорошо. Если внутри Mod, то выбрасывает исключение.
0
|
|||||||
|
|
|||||||
| 07.05.2017, 15:31 | |||||||
0
|
|||||||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
||||||||||||
| 07.05.2017, 16:24 [ТС] | ||||||||||||
|
Вообще, по заданию необходимо найти НОД. Собираюсь брать такой вариант:
0
|
||||||||||||
|
2 / 2 / 2
Регистрация: 10.12.2015
Сообщений: 131
|
||
| 07.05.2017, 19:27 [ТС] | ||
|
В общем, извиняюсь что вам всё это время "выносил мозг" Проблема оказалась в криво написаной мной функции копирования переменной. Оттуда и росли все проблемы. Спасибо, что помогали, и в особенности за терпение. Теперь всё работает
0
|
||
|
|
|
| 07.05.2017, 20:08 | |
|
Рад, что у Вас всё закончилось хорошо.
0
|
|
| 07.05.2017, 20:08 | |
|
Длинная арифметика: операция сравнения двух чисел (A >= B) Длинная арифметика. Перемножение двух больших чисел Длинная арифметика. Вычитание двух положительных чисел Длинная арифметика: умножение двух длинных чисел Длинная арифметика. Умножение двух длинных чисел. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|