Форум программистов, компьютерный форум CyberForum.ru

"Длинная" арифметика в рекурсии - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
30.08.2011, 21:26     "Длинная" арифметика в рекурсии #1
Как реализовать длинную арифметику в рекурсии типа N! = 1 * 2 * 3 * … * (N-1) * N. Да и вообще, не откажусь от информации в общем о длинной арифметике.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2011, 21:26     "Длинная" арифметика в рекурсии
Посмотрите здесь:

C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" C++
Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". C++
Ошибка в программе, адресная арифметика(Компилятор выдает ошибку "Cannot conver int* to int") C++
C++ Необработанное исключение в "0x01082855" в "sort.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
30.08.2011, 21:50     "Длинная" арифметика в рекурсии #2
Я что-то не понял, сегодня гугл что, массовый бан устроил?
http://lmgtfy.com/?q=%D0%B4%D0%BB%D0...B8%D0%BA%D0%B0
Ну, и чтобы сообщение не было спамом))
http://ru.wikipedia.org/wiki/Длинная_арифметика
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
31.08.2011, 01:06     "Длинная" арифметика в рекурсии #3
Цитата Сообщение от ITZver Посмотреть сообщение
Как реализовать длинную арифметику в рекурсии типа N! = 1 * 2 * 3 * … * (N-1) * N.
Очень просто:
C++
1
2
3
4
5
 unsigned int fact( unsigned int f)
{
    if ( f <= 1) return 1;
    return f * fact( f - 1);
}
Проверка на меньше либо равно 1, потому что полагают факториал от нуля равен единице.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
31.08.2011, 01:08     "Длинная" арифметика в рекурсии #4
An1ka, а длинная арифметика где?
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
31.08.2011, 01:39  [ТС]     "Длинная" арифметика в рекурсии #5
Как я понимаю, длинная арифметика заключается в том, что длинные числа, превышающие диапазон типов, хранятся в массивах. Так?
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
31.08.2011, 08:09     "Длинная" арифметика в рекурсии #6
Да. Массивы - это один из способов хранения длинных чисел.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.08.2011, 08:20     "Длинная" арифметика в рекурсии #7
Цитата Сообщение от grizlik78 Посмотреть сообщение
An1ka, а длинная арифметика где?
А чем она от короткой отличается?
Просто перегрузить <=,*,-, и все =)
Zverit
31.08.2011, 09:32  [ТС]
  #8

Не по теме:

Цитата Сообщение от diagon Посмотреть сообщение
Просто перегрузить <=,*,-, и все =)
Блиин...Как сам я сам не догадался?! Спасибо!

silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
31.08.2011, 10:43     "Длинная" арифметика в рекурсии #9
Цитата Сообщение от diagon Посмотреть сообщение
А чем она от короткой отличается?
Возвращаемым и передаваемым типом unsigned int
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
31.08.2011, 11:02     "Длинная" арифметика в рекурсии #10
Легче реализовать функцию, где длинное число будем передавать по ссылке
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
31.08.2011, 11:14     "Длинная" арифметика в рекурсии #11
Я тут когда-то начинал заниматься этим делом: http://www.cyberforum.ru/cpp-beginne...ead153284.html
но в итоге до конца дело так и не довел
Вроде бы есть только сложение, вычитание, умножение на Си. Надо реализовать деление и при желании можно все обернуть в класс.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
31.08.2011, 12:15     "Длинная" арифметика в рекурсии #12
Тут вот очень хорошо реализовано
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
31.08.2011, 12:22  [ТС]     "Длинная" арифметика в рекурсии #13

Не по теме:

iama,
fasked, ага, уже нашел. Но все равно спасибо большое!



Добавлено через 4 минуты
iama, Только там с векторами. Хотелось бы без них. Т.к наверное на олимпиадах не разрешено пользоваться STL.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
31.08.2011, 12:23     "Длинная" арифметика в рекурсии #14
Цитата Сообщение от ITZver Посмотреть сообщение
наверное на олимпиадах не разрешено пользоваться STL.
Это еще почему?
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
31.08.2011, 12:25  [ТС]     "Длинная" арифметика в рекурсии #15
Цитата Сообщение от iama Посмотреть сообщение
Это еще почему?
А разве можно? Вообще сомневаюсь, что можно на C++.Там ,вроде как, только на Basic и Pascal (Я о всероссийской олимпиаде по информатике)Исправьте, если не прав, просто сколько раз участвовал, писал на Pascal, а другие как то не предлагали.
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
31.08.2011, 12:30     "Длинная" арифметика в рекурсии #16
Если можно пользоваться С++, то векторами тоже. Стандарт однако
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
31.08.2011, 12:31  [ТС]     "Длинная" арифметика в рекурсии #17
Цитата Сообщение от zuq Посмотреть сообщение
Если можно пользоваться С++, то векторами тоже. Стандарт однако
Согласен, но там же есть готовые алгоритмы.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.08.2011, 12:35     "Длинная" арифметика в рекурсии #18
Хм... В нашей районной олимпиаде даже на яве писать можно было, не говоря уже про STL =\
Про всероссийскую не знаю, но вряд ли там только на паскале и бейсике писать можно.
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
31.08.2011, 12:35     "Длинная" арифметика в рекурсии #19
Так это же хорошо) Насколько я знаю, STL - можно пользоваться в полной мере.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2011, 12:36     "Длинная" арифметика в рекурсии
Еще ссылки по теме:

Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000" C++
C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"
Задачка"Целочисленная арифметика" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
31.08.2011, 12:36     "Длинная" арифметика в рекурсии #20
ITZver, дается компилятор, и ты волен совать в него какой угодно код (не взламывающий систему), лишь бы получить правильный результат. Действительно, знание STL - большой бонус на олимпиадах.
Yandex
Объявления
31.08.2011, 12:36     "Длинная" арифметика в рекурсии
Ответ Создать тему
Опции темы

Текущее время: 09:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru