Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.06.2019
Сообщений: 4

Задача на почти факториал. F(n)=n*F(n-1)*F(n-2). Длинная арифметика

13.06.2019, 20:38. Показов 1015. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста реализовать задачу. F(n)=n*F(n-1)*F(n-2) F(1)=1. От факториала отличается тем, что вычисляется произведение всех вычисленных до это значений( Вводим 4. При факториале будет 24, тут 48).
Идея такая: Ввести массив (или массивы) и хранить F(n-1) и F(n-2).Тогда вычислять будет удобно. Но проблема в том что она должна работать с длинными числами. Для работы с ними используем такие операторы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
typedef vector<int> big;
istream& operator >>(istream& stream,big& a){
    string s;stream>>s;
    for(int i=s.size()-1;i>=0;--i)a.PB(s[i]-'0');
    return stream;}
    ostream& operator <<(ostream& stream,big a){
        for(int i=a.size()-1;i>=0;--i)stream<<a[i];
        return stream;}
bool operator >(big a,big b){
    if(a.size()>b.size())return true;
    if(a.size()<b.size())return false;
    for(int i=a.size()-1;i>=0;--i){
    if(a[i]>b[i])return true;
    if(a[i]<b[i])return false;}
 return false;}
  big operator +(big a, big b){
    big c; int i, r=0;
    for(i=0;i<a.size()||i<b.size()||r;++i){
        if(i<a.size())r+=a[i];
        if(i<b.size())r+=b[i];
        c.PB(r%10);r/=10;}
        return c;}
 big operator *(big x, int y){
    big z;
    if(y){long long r=0;
    for(auto e:x){
        r+=e*y;z.push_back(r%10); r/=10;}
        while(r){z.push_back(r%10);r/=10;}}
    else z.push_back(0);
    return z;}
    big operator *(big x, big y){big z,r(1,0);
    for(auto e:x){
        r=r+y*e;z.push_back(r[0]); r.erase(r.begin());}
        for(auto e:r)z.push_back(e);
        while(z.back()==0 and z.size()>1)z.pop_back();
        return z;
    }
Не совсем понимаю как использовать массив с векторами, но преподаватель намекал, что лучше писать так, а не иначе.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2019, 20:38
Ответы с готовыми решениями:

Факториал. Длинная арифметика
Не могу решать проблему с мусорными значениями. Выводится вместе с правильным ответом куча мусора, как фиксить? #include...

Длинная арифметика. Факториал
Добрый вечер, господа программисты. Сижу сейчас и разбираюсь с кодом для вычисления факториала из Окулова (задание 10, программа 5)....

Факториал (Длинная арифметика)
Требуется вычислить факториал целого числа N. Входные данные В единственной строке входного файла INPUT.TXT записано одно целое...

6
458 / 294 / 191
Регистрация: 23.06.2018
Сообщений: 678
13.06.2019, 22:10
У меня 3 вопроса:
1. Доколе будет обфускация такая, что не прочесть и строчки уж нельзя?
2. Откуда в С++ оператор and, если вместо него оператор &&?
3. Откуда у вектора метод PB и что он делает?
Естественно, первые два вопроса просто крик души, а вот третий мне действительно интересен. Что за PB?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
13.06.2019, 23:06
Цитата Сообщение от Bleach163 Посмотреть сообщение
Откуда в С++ оператор and
Комитет по стандартизации добавил.
Ещё в C++98.
Лол.
0
458 / 294 / 191
Регистрация: 23.06.2018
Сообщений: 678
13.06.2019, 23:17
Цитата Сообщение от rat0r Посмотреть сообщение
Ещё в C++98
Хм, и вправду. Не подскажете, не убирали ли его в каких-либо последующих стандартах и если нет, то почему в VS2017 я не могу применить его?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
13.06.2019, 23:34
Цитата Сообщение от Bleach163 Посмотреть сообщение
почему в VS2017 я не могу применить его?
https://stackoverflow.com/ques... -operators
1
0 / 0 / 0
Регистрация: 13.06.2019
Сообщений: 4
14.06.2019, 09:04  [ТС]
Ой, забыл. PB - push_back .
0
0 / 0 / 0
Регистрация: 13.06.2019
Сообщений: 4
18.06.2019, 19:58  [ТС]
А может кто-то сделать эту задачу без учёта длинных чисел?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2019, 19:58

Длинная арифметика. Факториал
Придумать алгоритм факториала, не сложно, для 1-14. Но дальше не знаю как сделать длинную арифметику для больших чисел. Подскажите...

Факториал 12+ (длинная арифметика)
Цель - написать программу вычисляющую факториал от 12 до 810 с использованием длинной арифметики. Прошу помочь с основной программой....

Длинная арифметика. Факториал 1 <= n <= 10000
Добрый вечер. Подскажите, пожалуйста, возможно ли написать длинную арифметику для вычисления факториала до 10000 включительно на C++ без...

Длинная арифметика. Задача А + В
Прошу помочь решить эту задачку, желательно с закомментированными построчными объяснениями. Особенно про подключаемые файлы -инпут и...

Задача Новый год и старые свойства длинная арифметика
Здраствуйте помогите пожалуйста с задачой! Вроде бы длинная арифметика! Нужно решить ее срочно! Помогите чем сможете пожалуйста! ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru