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

рекурсии вычислять факториал - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Лежит ли точка М(xm;ym) внутри треугольника, заданного координатами своих вершин http://www.cyberforum.ru/cpp-beginners/thread306423.html
Лежит ли точка М(xm;ym) внутри треугольника, заданного координатами своих вершин A(xa;ya), B(xb;yb), C(xc;yc) на плоскости
C++ Сортировка одномерных массивов!!! все должно быть написано одним кодом и если можно на языке С http://www.cyberforum.ru/cpp-beginners/thread306404.html
C++ Программа шифрования\дешифрования
Уважаемые программисты! Хочу попросить у Вас помощи в написании 2-х программ... Я ещё не очень силён в программировании, плюс ко всему какой-то непонятный план занятий (проходили одно, а расчётная работа совершенно по другой теме), поэтому я, собственно, здесь. Итак, задача состоит в том, чтобы разработать программу шифрования\дешифрования исходного сообщения по таблице Вижинера с символьным...
C++ Программирование алгоритмов с использованием двумерных динамических массивов
Реализовать обработку матрицы: Отобразить верхнюю половину матрицы на нижнюю зеркально симметрично относительно горизонтальной оси. Прошу помощи.
C++ Сравнение двух списков http://www.cyberforum.ru/cpp-beginners/thread306390.html
Доброго всем времени суток. Изначальное задание было вот таким - "написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют." . Преподователь проверил, сказал, что все в порядке. А вот затем последовало дополнительное задание. Теперь мне нужно сравнить два списка (т.е если хотя бы один из элементов не равен другому,...
C++ Вывести слово, содержащее наибольшее количество цифр и вывести число цифр в слове Дана строка. Исключить из нее подстроку, расположенную между самой левой открывающейся скобкой «(» и самой правой закрывающейся скобкой «)». Сами скобки должны быть также исключены Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3 Вывести слово, содержащее наибольшее количество цифр и вывести число цифр в слове подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 20:07     рекурсии вычислять факториал
Как-то сомневаюсь я, что ваша программа посчитает длинный факториал=\
Моя реализация длинного факториала:
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
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <vector>
#define base 1000000000
void writelong(std::vector<int> vec){
    printf ("%d", vec.empty() ? 0 : vec.back());
    for (int i=(int)vec.size()-2; i>=0; --i)
        printf ("%09d", vec[i]);
}
std::vector<int> smult(std::vector<int> a, int b){
    int carry = 0;
    for (size_t i=0; i<a.size() || carry; ++i) {
        if (i == a.size())
            a.push_back (0);
        long long cur = carry + a[i] * 1ll * b;
        a[i] = int (cur % base);
        carry = int (cur / base);
    }
    while (a.size() > 1 && a.back() == 0)
        a.pop_back();
    return a;
}
int main(){
    int b;
    std::cin >> b;
    std::vector<int> a(1,1);
    for (int i = 1; i <= b; i++)
        a=smult(a,i);
    writelong(a);
    return 0;
}
Нерекурсивная правда...
Зато 100000! (ответ полмегабайта xD) за 3 минуты считает
 
Текущее время: 15:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru