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

найти факториал числа... - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 173, средняя оценка - 5.00
евгений200606
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 13
19.09.2010, 13:33     найти факториал числа... #1
помогите!пожалуйста!=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2010, 13:33     найти факториал числа...
Посмотрите здесь:

C++ Факториал числа
Факториал числа C++
Факториал большого числа C++
C++ факториал числа
Найти факториал числа, пользуясь только указателями C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,308
19.09.2010, 14:54     найти факториал числа... #2
http://ru.wikibooks.org/wiki/%D0%AF%...B8%D0%B0%D0%BB
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
20.09.2010, 13:57     найти факториал числа... #3
C++
1
2
3
4
5
6
int Fact(int x) 
{ 
    if (x==0)
    return 1;
    return x*Fact(x-1);
}
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
20.09.2010, 14:11     найти факториал числа... #4
Вот

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include "Factorial.h"
int main()
{
    setlocale(LC_ALL, "Russian");
    
    Factorial *factorial = new Factorial();
    int fact;
 
    std::cout<<"Введите факториал:\n> ";
    std::cin>>fact;
    
    factorial->WriteFactorial(fact);
    std::cout<<"Количество нулей:\n< "<<factorial->CountZero()<<std::endl;
    
    delete factorial;
    system("pause");
    return EXIT_SUCCESS;
}
factorial.h
C++
1
2
3
4
5
6
7
8
9
10
11
class Factorial
{
public:
    void WriteFactorial(int);
    int CountZero();
protected:
private:
    void _Factorial(int);
    static const int n = 15000000;
    int mas[n];
};
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
#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];
    }
}
 
int Factorial::CountZero()
{
    int i = n - 1, count = 0;
    while(mas[i] == 0) --i;
    count = (n - i - 1) * 3;
 
    if(!(mas[i] % 100))
        return count + 2;
    else
        if(!(mas[i] % 10))
            return count + 1;
    return count;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 14:50     найти факториал числа... #5
C
1
2
3
4
5
6
7
8
9
int factorial(int n)
{
    int i;
    
    for (i = n - 1; i > 0; i--)
        n *= i;
 
    return (n == 0) ? 1 : n;
}
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
20.09.2010, 16:55     найти факториал числа... #6
silent_1991, тогда уже так
C
1
for (i = n - 1; i > 1; i--)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 17:00     найти факториал числа... #7
M128K145,
Каюсь)))
Почему-то подумал, что не сработает при входной 1...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 02:24     найти факториал числа...
Еще ссылки по теме:

Факториал числа C++
Найти факториал числа заданного условием C++
Известен факториал числа. Найти это число C++

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

Или воспользуйтесь поиском по форуму:
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
09.06.2012, 02:24     найти факториал числа... #8
1000! вычисляет за полторы секунды
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
#include<iostream>
#include<string>
using namespace std;
string mult(string n, int x){
       int add=0,num;
       string str="";
       for (int i=n.size()-1; i>=0; i--){
           num=((int)n[i]-48)*x+add;
           str=char(num%10+48)+str;
           add=num/10;
       }
       string tostr="";
       int d=1;
       while (add>=d){
             tostr=char((add%(d*10))/d+48)+tostr;
             d*=10;
       }
       return tostr+str;
}
int main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int n;
    cin>>n;
    string str="1";
    for (int i=1; i<=n; i++)
        str=mult(str,i);
    cout<<str;
    return 0;
}

Не по теме:

знаю теме 2 года, но решил написать, может автору еще нужно)

Yandex
Объявления
09.06.2012, 02:24     найти факториал числа...
Ответ Создать тему
Опции темы

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