Умножение двух долгих длинных целых C

Переполнение CMD в одной строке

echo @call b.cmd > b.cmd & b
5
задан Gilles 'SO- stop being evil' 29 September 2012 в 14:02
поделиться

5 ответов

Вот один из подходов: подумайте, как бы вы умножили эти числа вручную, на бумаге. Реализуйте этот метод на языке C. Вам придется узнать:

  • как разбить целое число (представленное в виде строки) на цифры
  • как преобразовать каждую цифру обратно в целое число 0 <= d <10
  • как управлять массивами цифр (т. Е. Насколько большими вы должны сделать массивы?)
  • как написать цикл (ы), который может потребоваться для реализации умножения
  • как управлять переносом продуктов из одной цифры в следующий
  • , как преобразовать эти цифры обратно в символы для вывода
15
ответ дан 18 December 2019 в 09:07
поделиться

обычно большие целые числа, представленные в виде байтовых массивов. Вы можете посмотреть на реализацию Microsoft BigInteger в DLR. Я думаю, они использовали алгоритмы, разработанные Кнутом

1
ответ дан 18 December 2019 в 09:07
поделиться

Посмотрите эту библиотеку BigInteger и очень простой пример кода из World of Seven.

Если вас интересуют некоторые из моих домашних приготовленных коды на C (только умножение):

////////////////////////////////////////////////////////////////////////////////

Code removed after I checked the home-work tag ;)

///////////////////////////////////////////////////////////////////////////////////////

Это работает в некоторых из предыдущих соревнований по программированию, в которых я участвовал;) Но если вы ищете еще более быстрый алгоритм умножения, вы можете реализовать алгоритм Карацубы , я лично использую это теперь в реальном времени.

1
ответ дан 18 December 2019 в 09:07
поделиться

Вы можете использовать библиотеку для арифметики больших целых чисел, в Википедии есть список здесь .

0
ответ дан 18 December 2019 в 09:07
поделиться

Другим подходом было бы умножение чисел как float / double и исключение десятичной дроби при отображении результатов.

0
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: