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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.91
MasterRO
37 / 5 / 3
Регистрация: 15.09.2011
Сообщений: 73
#1

Вычислить факториал 100! - C++

11.10.2012, 20:02. Просмотров 6293. Ответов 11
Метки нет (Все метки)

Необходимо вычислить факториал 100! и представить его в виде массива из 158 элементов, один элемент - 1 цифра числа. Само число очень большое и в целочисельные типы данных не помещается. Как быть??? Подскажите, пожалуйста.

Вот моя прога, которая работает только до 9!

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
// Факториал 100.cpp: определяет точку входа для консольного приложения.
//
 
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    double p=1; 
 
    //Вычисляем факториал
    for(int i=1; i<10; i++)
    {
        p*=i; cout<<p<<" ";
    }
     int k=0; cout<<endl;
 
    //Считаем количество цифр
 
    while (p>1)
    {k++; p/=10; cout<<k<<"  ";}
    cout<<endl;
 
    //Разбиваем число на массив десятичных цифр
    double d[158]; int c=k;
    for(int i=0; i<=k; i++)
    {   p*=10;
        cout<<"p="<<p<<" ";
        d[i]=floor(p);
        cout<<"d_"<<i<<"="<<d[i]<<" ";
        p-=int(p);
    }
    cout<<endl; cout<<endl; cout<<endl; cout<<endl;
    //Вывод получившейся последовательности
    for(int i=0; i<k; i++)
        cout<<d[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
    setlocale(LC_ALL, "Russian");
    double p=1; 
 
    //Вычисляем факториал
    for(int i=1; i<10; i++)
    {p*=i; //cout<<p<<" ";}
     int k=0; //cout<<endl;
 
    //Считаем количество цифр
 
    while (p>1)
    {k++; p/=10; cout<<k<<"  ";}
    cout<<endl;
 
    //Разбиваем число на массив десятичных цифр
    double d[158]; int c=k;
    for(int i=0; i<=k; i++)
    {   p*=10;
        //cout<<"p="<<p<<" ";
        d[i]=floor(p);
        //cout<<"d_"<<i<<"="<<d[i]<<" ";
        p-=int(p);
    }
    cout<<endl; cout<<endl; cout<<endl; cout<<endl;
    //Вывод получившейся последовательности
    for(int i=0; i<k; i++)
        cout<<d[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2012, 20:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить факториал 100! (C++):

Нужно вычислить факториал 33, 100 и 1000 как можно проще - C++
Нужно вычислить фактариал 33, 100 и 1000 как можно проще

Факториал 100 или N числа - C++
Доброго времени суток ;) Знаю что не 1 задаю этот вопрос, поэтому прежде чем создал тему внимательно прогуглил, но столкнулся с...

Вычислить факториал - C++
какое нужно написать уравнение,что бы программа высчитывала факториал числа

Вычислить факториал числа - C++
Требуется по заданному числу 1&lt;=N&lt;=12 посчитать его факториал. Учтите, что факториал растет очень бысто и уже при N = 13 результат выйдет...

Циклы: вычислить факториал числа - C++
1.Надо написать программу которая будет вычислять факториал числа.я вот пробовал чёт не получается: #include &quot;stdafx.h&quot; #include...

Вычислить двойной факториал, используя цикл do while - C++
Дано целое число N (&gt; 0). Найти двойной факториал N: N!! = N*(N-2)*(N-4)*... (последний сомножитель равен 2, если N - четное, и 1, если N -...

11
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
11.10.2012, 20:15 #2
for(int i=1; i<10; i++) поставь i<=10 вудет до 10 работать))))
0
MasterRO
37 / 5 / 3
Регистрация: 15.09.2011
Сообщений: 73
11.10.2012, 20:16  [ТС] #3
Хотя нет.....программа выводит корректно 41!, а далее начинается каша. В чем причина?? Как это можно исправить?
0
MasterRO
37 / 5 / 3
Регистрация: 15.09.2011
Сообщений: 73
11.10.2012, 20:18  [ТС] #4
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
// Факториал 100.cpp: определяет точку входа для консольного приложения.
//
 
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    double p=1; 
 
    //Вычисляем факториал
    for(int i=1; i<=41; i++)
    {
        p*=i; //cout<<p<<" ";
    }
     int k=0; cout<<endl;
 
    //Считаем количество цифр
 
    while (p>1)
    {
        k++; p/=10; //cout<<k<<"  ";
    }
    cout<<endl;
 
    //Разбиваем число на массив десятичных цифр
    double d[158]; int c=k;
    for(int i=0; i<=k; i++)
    {   p*=10;
        //cout<<"p="<<p<<" ";
        d[i]=floor(p);
        //cout<<"d_"<<i<<"="<<d[i]<<" ";
        p-=int(p);
    }
    cout<<endl; cout<<endl; cout<<endl; cout<<endl;
    //Вывод получившейся последовательности
    for(int i=0; i<k; i++)
        cout<<d[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Евгений89 Посмотреть сообщение
for(int i=1; i<10; i++) поставь i<=10 вудет до 10 работать))))
Проблема именно в большом размере числа скорее всего.....
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.10.2012, 20:21 #5
Вывести факториал числа
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
11.10.2012, 20:21 #6
а если попробывать через символ новой строки\n пусть в столбик выводит
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2012, 20:22 #7
без длинной арифметики никак
100! = 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582 51185210916864000000000000000000000000
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
11.10.2012, 20:24 #8
жесть
0
MasterRO
37 / 5 / 3
Регистрация: 15.09.2011
Сообщений: 73
11.10.2012, 20:25  [ТС] #9
Цитата Сообщение от Thinker Посмотреть сообщение
без длинной арифметики никак
100! = 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582 51185210916864000000000000000000000000
Проблема в том, что я с длинной арифметикой не знаком, нас совсем другому учили...
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2012, 20:27 #10
берите хороший вариант от diagon, а иначе никак, здесь стандартные типы не подойдут
0
MasterRO
37 / 5 / 3
Регистрация: 15.09.2011
Сообщений: 73
11.10.2012, 20:31  [ТС] #11
Цитата Сообщение от Thinker Посмотреть сообщение
берите хороший вариант от diagon, а иначе никак, здесь стандартные типы не подойдут
Спасибо конечно, но я в его коде ничего не пойму. Может со временем научусь и этому, а пока, если без длинной арифметики никак, обойдусь и тем что имею)))
0
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 192
Завершенные тесты: 1
11.10.2012, 20:42 #12
я немного опоздал, но вот мое решение :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
string mult(string x, int y){
       int add=0, t;
       string result="";
       for (int i=x.size()-1; i>=0; i--){
           t=int(x[i]-'0')*y+add;
           add=t/10;
           result=char(t%10+'0')+result;
       }
       if (add!=0) result=char(add%10+'0')+result;
       if (add>9) result=char(add/10+'0')+result;
       return result;
}
int main(){
    int n;
    string str="1";
    cin>>n;
    for (int i=2; i<=n; i++) str=mult(str, i);
    cout<<str<<endl;
    system("pause");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2012, 20:42
Привет! Вот еще темы с ответами:

Вычислить факториал заданного целого числа - C++
Составить блок схему алгоритма и программу согласно условию задачи. Вычислить факториал заданного целого числа. Факториал числа N...

Вычислить факториал натурального числа n из отрезка [1;20] - C++
Создайте программу, вычисляющую факториал натурального числа n из отрезка , которое пользователь введёт с клавиатуры. Если число будет...

Вычислить факториал числа через оператор do while - C++
Итак, задача следующая: Написать программу вычисления факториала целого положительного числа N! Решить эту задачу в двух вариантах: с...

Вычислить данное выражение(сумма,факториал) - C++
Нужно написать программу, вычисляющую то, что я добавил во вложения. Не получается сделать... Не очень ясен метод решения, и я не знаю,...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
11.10.2012, 20:42
Ответ Создать тему
Опции темы

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