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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конвертация числа в строку и обратно, условие исключения, разность. http://www.cyberforum.ru/cpp-beginners/thread190108.html
Здравствуйте! Проблема с задачей: В четырёхзначном числе все цифры разные и отличны от нуля. если его записать в обратном порядке, то получится число, на k меньшее первоначального. Найти это число. Ввод с клавиатуры - разность k. #include "stdafx.h" #include <conio.h> #include <locale.h>
C++ Строка Столкнулся с проблемой: заменить все латинские буквы на *. как же задать в ифе (если итый элемент есть в буквах-исключениях) s='*'; как это сделать, кроме s=A || s=B || s=C...... http://www.cyberforum.ru/cpp-beginners/thread190095.html
C++ Почему на экран выводится цифры в формате с E (4.34e)?
Добрый день! Есть следующая функция #include <iostream> using namespace std; double* test(char *A){ char ch_year ; char ch_month ;
Как создать динамический массив размерностью m на n? C++
подскажите, а то я только n на n создавать умею)
C++ не могу сделать лабораторки по инфе на языке C++ http://www.cyberforum.ru/cpp-beginners/thread190089.html
помогите не получаются лабы по инфе!!! Посмотрите кто может помочь я 8 вариант! просто сроки поджимают а надо сдать 7 лабораторок по инфе!!! студент 1 курса Прикрепляйте файлы к сообщениям.
C++ Лабораторная работа по С++.Не поняла циклы дана последовательность n из вещественных чисел. Определить, образуют ли они возрастающую последовательность? подробнее

Показать сообщение отдельно
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
21.11.2010, 12:48     факториал 3000
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
// В каждом элементе массива хранится число [0, 999]
// Разборка переполнения состоит в том, что в текущий элемент массива
// записывается остаток от деления значения на 1000, потом это значение 
// делится на 1000 и суммируется со старшим по разрядности элементом
 
void Factorial::_Factorial(int factorial)
{
    int fact, i, zero = n - 1, index = n - 1;
    //---- Задаем 0! или 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; // ищем первый ненулевой элемент
        //старший десятичный разряд
 
        //---- Выполняем вычисление fact!
        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;
                }
            }
        }
        //------------------------------
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru