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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Hetrik
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 18
17.11.2012, 23:45     Нужно вычислить факториал 33, 100 и 1000 как можно проще #1
Нужно вычислить фактариал 33, 100 и 1000 как можно проще
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2012, 23:45     Нужно вычислить факториал 33, 100 и 1000 как можно проще
Посмотрите здесь:

C++ нужно решить как можно проще
Можно ли это написать как то проще C++
C++ Сочините пример как можно проще на сдвиг
C++ можно написать ее как то проще ?
C++ Вычислить факториал 100!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.11.2012, 23:52     Нужно вычислить факториал 33, 100 и 1000 как можно проще #2
кто тебе сказал, что надо? ты факториал тысячи не вычислишь просто.

Добавлено через 1 минуту
а впрочем, калькулятор виндовый умеет
4,02387260077093773543702433923e+2567
Hetrik
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 18
17.11.2012, 23:53  [ТС]     Нужно вычислить факториал 33, 100 и 1000 как можно проще #3
Ну тогда, хоть как-нибудь
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
17.11.2012, 23:58     Нужно вычислить факториал 33, 100 и 1000 как можно проще #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
 
int main()
{
    float d=1;
    for(int i=1;i<=33;i++)
    d*=i;
    cout<<d;
    system("pause");
    return 0;
}
NEbO
583 / 451 / 49
Регистрация: 22.01.2009
Сообщений: 1,173
Записей в блоге: 1
Завершенные тесты: 1
17.11.2012, 23:59     Нужно вычислить факториал 33, 100 и 1000 как можно проще #5
от тысячи -- легко, для этого можно заюзать библиотеку gmp.
ну а хоть как-нибудь, то:
C++
1
2
3
4
5
6
7
int fact(int x){
    unsigned long long res = 1;
    for (int i = 2; i <= x; i++) {
        res *= i;
    }
    return res;
}
пс. я, конечно, не супер пользователь этого форума, но думаю, что где-то уже есть решения этой проблемы века
Hetrik
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 18
18.11.2012, 00:00  [ТС]     Нужно вычислить факториал 33, 100 и 1000 как можно проще #6
NEbO, спасибо
NEbO
583 / 451 / 49
Регистрация: 22.01.2009
Сообщений: 1,173
Записей в блоге: 1
Завершенные тесты: 1
18.11.2012, 00:01     Нужно вычислить факториал 33, 100 и 1000 как можно проще #7
а, и еще -- если нужны конкретные факториалы конкретных чисел, проще всего использовать питон, там встроена поддержка больших чисел из коробки
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.11.2012, 00:50     Нужно вычислить факториал 33, 100 и 1000 как можно проще #8
just for fun
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <SWI-cpp.h>
 
int main()
{
    try
    {
        PlEngine engine("libswipl.dll");
        {
            PlTermv cmd(1);
            cmd[0] = "factorial.pl";
            PlQuery query("consult", cmd);
            query.next_solution();
        }
        {
            PlTermv cmd(3);
            cmd[0] = 1000;
            cmd[1] = 1;
            PlQuery query("factorial", cmd);
            query.next_solution();
            std::cout << static_cast<const char*>(cmd[2]) << std::endl;
        }
    }
    catch(...)
    {
        std::cout << "some exception thrown";
    }
}
Prolog
1
2
3
4
5
6
factorial(0, _, 1) :- !.
factorial(1, Res, Res) :- !.
factorial(N, Acc, Res) :-
    Acc1 is Acc * N,
    N1 is N - 1,
    factorial(N1, Acc1, Res).
NEbO
583 / 451 / 49
Регистрация: 22.01.2009
Сообщений: 1,173
Записей в блоге: 1
Завершенные тесты: 1
18.11.2012, 00:57     Нужно вычислить факториал 33, 100 и 1000 как можно проще #9
может, на хаскеле получилось бы покомпактнее...
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
18.11.2012, 01:05     Нужно вычислить факториал 33, 100 и 1000 как можно проще #10
Думаю, что задача на формулу Стирлинга.
Что-то вроде
Java
1
2
3
4
        final double e = 2.7182818284590452353602874713527d;
        for (int n : new int[]{33, 100, 1000}) {
            System.out.printf("%.4f * 10^%.4f\n", Math.sqrt(Math.PI * 2 * n), Math.log10(n / e) * n);
        }
Вроде степень правильная. Математику надо проверить и поправить.
-=ЮрА=-
Заблокирован
Автор FAQ
18.11.2012, 14:06     Нужно вычислить факториал 33, 100 и 1000 как можно проще #11
Цитата Сообщение от Hetrik Посмотреть сообщение
Нужно вычислить фактариал 33, 100
- проще того что внизу думаю невозможно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
double fact(double val)
{
    double ret = 1 < val ? val : 1;
    if(1 < (val -= 1))
        ret *= fact(val);
    return ret;
}
 
int main()
{
    cout<<"100! = "<<fact(100)<<endl;
    return 0;
}
У 1000! порядок превосходит DOUBLE_MAX, 4,02387260077093773543702433923e+2567 т.е нужен больший тип для хранения
Миниатюры
Нужно вычислить факториал 33, 100 и 1000 как можно проще  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2012, 15:03     Нужно вычислить факториал 33, 100 и 1000 как можно проще
Еще ссылки по теме:

Нужно написать программку по заданию, используя функции, как можно проще C++
C++ Как можно вычислить sinx с 100 символами после запятой?
Вычислить кол-во отрицательных элементов массива .только языком по проще если можно.Заранее спасибо C++

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.11.2012, 15:03     Нужно вычислить факториал 33, 100 и 1000 как можно проще #12
Без длинной арифметики получить точное значение невозможно. Т.е. простым способом эта задача не решается.
Как вариант Решил посчитать (2n)!
Yandex
Объявления
18.11.2012, 15:03     Нужно вычислить факториал 33, 100 и 1000 как можно проще
Ответ Создать тему
Опции темы

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