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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.97
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
#1

факториал 3000 - C++

12.11.2010, 18:12. Просмотров 4210. Ответов 19
Метки нет (Все метки)

как можно написать прогу,которая на экран записывает число равное факториалу 3000?
я попробовал но буквы какие то выводит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2010, 18:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос факториал 3000 (C++):

Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа - C++
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала N! и двойного факториала N!!...

Распечатать все четырехзначные натуральные десятичные числа из диапазона [2000,.,3000] - C++
Распечатать все четырехзначные натуральные десятичные числа из диапазона , в записи которых нет двух одинаковых цифр. Вывести такие числа...

Факториал - C++
Как написать программу для вычисления n факториал

Факториал - C++
Задано целое положительное число n. Определить значение выражения: P=\frac{\sum_{i=0}^{n-1}i+1}{(2n)!} Вот код программы: ...

С++ Факториал - C++
Надо написать программку на С++ которая вычисляет факториал числа n (факториал обозначается как n!). числа n в диапазоне от 1 до 12...

факториал и с++ - C++
Помогите написать программу на языке с++ для нахождения факториала. Заранее спасибо!

19
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.11.2010, 18:30 #2
Ну так. Ни в один стандартный тип это не поместится. Надо писать длинную арифметику.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
12.11.2010, 20:19  [ТС] #3
silent_1991, это как?Дин.массивы?
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
12.11.2010, 20:28 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Посмотри маленькую библиотечку
3
Вложения
Тип файла: zip LONG.ZIP (1.9 Кб, 69 просмотров)
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.11.2010, 01:37 #5
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> def fact(n):
...   base = 1
...   while n > 1:
...     base *= n
...     n -= 1
...   return base
... 
>>> fact(3), fact(0)
(6, 1)
>>> fact(3000)
 
...
 
>>> len(str(fact(3000)))
9131
>>>
то есть ты само число хранишь в массиве (в массиве разрядов числа), там же умножаешь и переносишь переполнение в старший разряд
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
13.11.2010, 08:31  [ТС] #6
Day, учитель сказал что лон не поможет
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.11.2010, 09:09 #7
^Tecktonik_KiLLeR, что значит "лон не поможет"? В смысле лонг? Ну так про него и речи не было, говорилось о длинной арифметике - т.е. операции с большими числами.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
13.11.2010, 09:27  [ТС] #8
silent_1991, значит как??

Добавлено через 1 минуту
я ничего не понял из лонг.с, Day
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.11.2010, 09:29 #9
Значит так. Большие числа можно реализовать в виде массива, каждый элемент которого - разряд большого числа. Далее реализовать арифметические операции над этими числами (по сути алгоритмы сложения, умножения, вычитания и деления столбиком, главное - позаботиться о правильном переносе разрядов). Ну а дальше факториал реализуется на основе уже описанных операций сложения и умножения.
1
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.11.2010, 09:37 #10
пример
1
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
13.11.2010, 12:54 #11
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
silent_1991, значит как??

Добавлено через 1 минуту
я ничего не понял из лонг.с, Day
Т.к. в сферу моих интересов входит работа с о-о-0чень большими числами, я применил для их представления динамические массивы (XXL) к которым по мере надобности прибавляются куски по 20 разрядов. Разряд содержит около 64000 цифр (unsigned short). А дальше идет просто арифметика, как нас учили складывать и умножать в школе, только циферки побольше. Для твоих целей (если тебе надо посчитать просто 3000! и об этом забыть) подойдут и более простые представления в виде конечных массивов которые предлагают другие участники топика. Я не настаиваю на том, что мое - самое лучшее, просто все уже было готово - не хочешь - не бери.

ЗЫ. В моем представлении есть еще один недостаток - не так-то просто представить полученный результат в виде десятичного числа, но и эта задача решена. Если кто заинтересуется - пожалуйста.
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.11.2010, 16:03 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include "factorial.h"
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    Factorial *factorial = new Factorial();
    int fact;
 
    std::cout<<"Введите факториал:\n> ";
    std::cin>>fact;
 
    factorial->PrintFactorial(fact);
 
    delete factorial;
    return 0;
}
factorial.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef FACTORIAL_H_
#define FACTORIAL_H_
 
class Factorial
{
public:
    void WriteFactorial(int);
    void PrintFactorial(int);
protected:
private:
    void _Factorial(int);
    static const int n = 1500000;
    int mas[n];
};
 
#endif /* FACTORIAL_H_ */
factorial.cpp
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include "factorial.h"
 
void Factorial::_Factorial(int factorial)
{
    int fact, i, zero = n - 1, index = n - 1;
    for(i = 0; i < n - 1; ++i)
        mas[i] = 0;
    mas[n - 1] = 1;
    for (fact = 2; fact <= factorial; ++fact)
    {
        while (mas[zero] == 0) --zero;
        for (i = zero; i >= index; --i)
            mas[i] *= fact;
        for (i = zero; i > index; --i)
            if (mas[i] >= 1000)
            {
                mas[i - 1] += mas[i] / 1000;
                mas[i] %= 1000;
            }
        if (mas[index] >= 1000)
        {
            mas[index - 1] += mas[index] / 1000;
            mas[index] %= 1000;
            index--;
            if (mas[index] >= 1000)
            {
                mas[index - 1] += mas[index] / 1000;
                mas[index] %= 1000;
                index--;
                if (mas[index] >= 1000)
                {
                    mas[index - 1] += mas[index] / 1000;
                    mas[index] %= 1000;
                }
            }
        }
    }
}
 
void Factorial::WriteFactorial(int factorial)
{
    _Factorial(factorial);
    int i = 0;
    while (mas[i++] == 0);
    std::ofstream out("factorial.txt", std::ios::out);
    for (i -= 1; i < n; ++i)
    {
        if (mas[i] >= 100)
            out<<mas[i];
        else
            if (mas[i] < 10)
                out<<"00"<<mas[i];
            else
                out<<"0"<<mas[i];
    }
}
 
void Factorial::PrintFactorial(int factorial)
{
    _Factorial(factorial);
    int i = 0;
    while (mas[i++] == 0);
 
    for (i -= 1; i < n; ++i)
    {
        if (mas[i] >= 100)
            std::cout<<mas[i];
        else
            if (mas[i] < 10)
                std::cout<<"00"<<mas[i];
            else
                std::cout<<"0"<<mas[i];
    }
}
3000!
414935960343785408555686709308661217095111919493180991768946765769755856512353195008600076521780034200751846353836171184 957508711140459077945534021610683396116210379041991775220626633901796828051647196974959688424577287660971030037261110953 402411271188331577388153284389297376130211063129303744014853787254460796102904294910497938881207625116251329170046416689 621175902035751754889806535778689152850937824699946746991908320935110683638242870635222685443392137751504885881040368188 090992929124971419005089389944047153514731545315874415099601742678750874603679741170723687472771439889206836916185036081 984597180937844535239585053776110865111623631459208861085574508745139453054362137118981508471920944263742032750299963337 849440147756714146808242074999147148783596697206389546705899601785694802633887671128710680049508274007171248194763864013 691935443541203127866014347925499591435301206531034066255032310207383515021951031486736123387393950965514621593490157899 499440723110044269248381401414554878727380458560235615832043179459530558306933512468907212461514684853087240312679670891 135489827334753757568993651763964247817334625108790157434373989204922670983170339321071763439833524445760404765654004144 146994799843545545977993867028394285134131889131656953108485135250940061477740470073314065417944280044366919036854692708 572717016480115120574524486079687737848036606530091098156390912941106337156215409038001350586716242623339024341666287165 212285902745688335048979268693697928783768948414365738664369550754739648822562221833800146007611968592176032348084674552 163304117380043311442259262436905587829149079738857587845857398286953903023838372658824276543064375177578972150450713618 017300516284244762942274857556278287634987671952813689135839188244992847415916831303340321999467520829148857643458638323 135452050759559120620672732969513861229946586075273178844524498653481641692388448890614958509343734428898148844273218171 312725338915345065811438233812058753798086050808897617538828962529336337504545491686002672295912255288545844826866553243 130113537548124095612376860780077007079395418489071494673778544075283078729881039129451219298647937034512574364455814597 571408227059863251653529065845711235852702119334529811055683988098840949803461850780252730387367840421694272379804643042 500450308066370327600163419214428057088024308505678921086469774551395391198386361671903002781463801369324823327715951805 961930695042378360826205708872092979297974294045768773383198774446855442948003217410566894237105450288704196119150727390 000316420144742133232938716180295556140046028674004228853898546503280284285151222960287957418016218232360983209714410470 125330673148961532367887349845539496043970503523477662113959145192704221222314269986920874635209806862243548133761943951 319428681134865315622281732149764817053818461553265961875302964786011608722636404439222576019264946109168851510131439455 743983031925571541621514424691223705191490978618494361509631099336395945617965933968519586053386311763241470668422571923 947425317264795597499932832472798078964707530540141940902006097126747531863655254032127577578539306975300565952082074574 994718981444537722482078884433351185456015688537081828928952183001396543769472864187766657628153897373401594105436814354 373461342446920670700827824236455574508825566701572427528103171416406314106813843309240272813189608848130406652261695528 256371838624649442956888593938467267236941994755713205460182634257310291153535327288081827730215967870884372934121170845 115806299676972666016636352769599690215021221049542595672785931855162684471003744346204220035353912037383930954206950214 862073906531909108213443342514978962842361985716747738481260974430550362508663547207309712980846971965377227798931602005 607250580075124074944481633922143981184927482819786551784785477491987141384850422903839540905708420381372771356677035650 410817805206950321362335216927405310153409217618340788177356746467490716166006532304389026397860655090053098724354456893 156013299424071122950154537715210519424455127953649712148722221937292891598330017423979775925305013188378834948842322225 073188163994389356278171028754325887945588577427803907171663812579037981491484455268858716299310145107332155547732645760 359161842987083232375688379171350730060267382922946870810307519460203764381386771073337793125822573564355345771628040304 809257859097472334139329040722398600054482692961103936401275395398993974200219252689286225649592791363695469832473144940 942974942132087169636628129638461913781146092107010330121199342649416664491303108984935353664018312826831125065783864259 065371970109072764293305347512973367169294150478709492417781215349794994497323584451302100297203599935765077305636969505 399908912520048101200905696331443681791942479635633891024862507733672493998017234516270488501494383437358264400534814749 574213288736484795895538438363782756014333777988161268544624064941344161191089526533267616276602211308792116659243794965 348380302360642949819855410143115666017395185394260086731985645866846354427301800222926075897671921983675295283651587155 218876983179990058531215186910377766768836542912474198260994345356715294128238376121155556862104545838103551544049537184 707263632185327754865018110026213312284298609261121595730660239320774767428009094626743221388052906430677112769640137359 062510510506235682413176515330307753589751345651474241674015174707208391018699899932793649108926879247397058141528555439 659542226039190592658256373446764063595258389669815119839598866036837530420179903281859455694125505190663028548695333776 829846000318080938221300381022143870574611813042519619164059704560351831217081516586473565565405329284117486289570828567 923000535258463770612805914520355463899321278759063496278379758713525886182132522635770383962027373853249083536804979900 857015224833034395251973446533429946525652360967428345505237397339023742618088717992837222853662934392408957629131544421 065736092054818421393658938677155428424772751001667343577430936389484445647643771840738743794710078671510704495546576262 815661375507307637680806000318442962339778082333113597875771369830128175716256716832872815119373366857894371090977485812 228681268241223172726811849752078634531074953317082601531594402536453655244535879520347452134292489166445048043553522819 777219819718690548841768963987827047820661269214725486182478596264342791902745034529947693679972172851654655917994717890 678856872785744700842897237782347630807409195129662383464278396538650173246658501921440916946303712655811977007746825620 351983187829135910139978173036351737647067143839928102912244608483205189832483488551310255397215831849316536707322731729 954317507754756347481273209566554318518795869781724917217008657680989083278308382404377379744553425256887128988555131809 670124978594542906096273705906599707841727384207216055767890605651676945654901203881657758619392309243629833895498572798 745233980904998584674848503995091093988342104246931136178759786118030961087743627649904146551675455076136657259149933761 143402437629102903841358885313125911325448492258960071848511693901939854346494154837823383025313687759900054437223329014 625681840959988305225215853285998339903365954189326966801632658993582346632470803240204297913574257554985493728961920916 507946719971214398325815539458351256480108898868870568827112226287340357724184248032311730273384422206040156092420795694 932049438094024655625303033288241653020380060412884443848841891293939859717656702115016113401211693555358649848029415632 382794475763150426857342698631165628009321645781654104118990783962107586051450915265284224336472308804690884264125251265 847291340591951717542911526220022297569869279591246209643630570521330992164222584376518891936303298512232829508061262005 735655542131835558382893181387959409623037927772303444234323415616035585905023244752745026308698314141253963717544136118 972691586507167223080834352955784010872360273470011187861462331854394310570584837704748060350045568850206027302222563976 307389399850249781551826799169941641455403299098131905066543581566576915290689081862041384440914563552912420649017174364 304734551913759229149532829881518087400767334869976953228714507915844487039804057376735557778735939378915771479560233407 084563923141701183925552346181197759156733859559192652706240637342777602158465110353680579633207148969426633585703753058 296766082242084654645585566678892226276199902639617926374578516525409187566085438596612219442487204249600000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000
3
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
20.11.2010, 20:29  [ТС] #13
M128K145, пожалуйста прокомментируйте код
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
20.11.2010, 20:52 #14
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
M128K145, пожалуйста прокомментируйте код
Попробовал бы сам - на пользу пойдет!
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
21.11.2010, 10:46  [ТС] #15
Day, попробовал-не могу,поэтому и прошу чтобы утт прокомменировали...надо мне для понедельника
0
21.11.2010, 10:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2010, 10:46
Привет! Вот еще темы с ответами:

факториал С++ - C++
Ребята, помогите пожалуйста с факториалом, а то я все не могу понять как сделать так что-бы k1 - факториал, от k до n #include...

Факториал - C++
Имеется код: #include &lt;iostream&gt; using namespace std; long long fact(int a); int main() { long long int N;

Факториал Си - C++
Здравствуйте. Нужно решить следующую задачку. Заранее огромное спасибо.

факториал в С++ - C++
Как найти факториал с помощью рекурсивной функции?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru