Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2018, 01:43   #1
fufyandiya
Новичок
Джуниор
 
Регистрация: 23.03.2018
Сообщений: 1
По умолчанию Посчитать большой факториал - С (СИ)

Всем привет, необходимо посчитать заданный факториал n<200. Понимаю, то нужно использовать длинную алгебру, нашел решение для двух задаваемых чисел, но немогу отредактировать для вычисления факториала. Вот решение для двух чисел:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
#define MAXSZ 255
#define BASE 10
int main()
{
    SetConsoleOutputCP(1251);
    int s_offset, n_result, s, n;
    char s1[MAXSZ];
    char s2[MAXSZ];
    char result[MAXSZ] = { 0 };
    char ost = 1;
    scanf("%s",&s1);
    scanf("%s",&s2);
    for (int i = strlen(s1) - 1; i >= 0; i--) 
    {
        for (int j = strlen(s2) - 1; j >= 0; j--) 
        {
            ost = 1;
            s = strlen(s2) - j + strlen(s1) - i - 2;
            n = (s1[i] - '0') * (s2[j] - '0');
            for (int k = 0; ost==1 && (s + k < MAXSZ);k++) 
           {
                if (result[s + k] == 0)
                {
                    result[s + k] = '0';
                }
                n = n + result[s + k] - '0';
                result[s + k] = '0' + n % BASE;
                n = n / BASE;
                if (n == 0)
                {
                    ost = 0;
                }
            }
        }
    }
 
    for (int i = MAXSZ - 1; i >= 0; i--)
    {
        if (result[i] != 0)
        {
            printf("%c", result[i]);
        }
    }
    printf("\n");
    return 0;
}
fufyandiya вне форума Ответить с цитированием
Старый 24.03.2018, 15:39   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Какому это безумцу потребовался 200! да еще в целых числах ? Double недостаточно?
Длинная арифметика, на мою думку, это для тех бездельников, что вычисляют Π с точностью до многотысячного знака после запятой. Я так думаю.
digitalis вне форума Ответить с цитированием
Старый 25.03.2018, 01:18   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
200! да еще в целых числах
Мелочь какая..
Код:
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from math import factorial
>>> factorial(200)
7886578673647905035523632139321850622951359776871732632947425332443594499634033429203042840119846239041772121389196388302576427902426371050619266249528299311134
6285727076331723739698894392244562145166424025403329186413122742829485327752424240757390324032125740557956866022603190417032406235170085879617892222278962370389
7374720000000000000000000000000000000000000000000000000
Black Fregat вне форума Ответить с цитированием
Старый 25.03.2018, 08:22   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Мелочь какая..

78865786736479050355236321393218506 22951359776871732632947425332443594 .....
Ну дык я же и говорю :
7,88657867364791E374
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО][Python] факториал, Фибоначчи: в ходе выполнения в цикле все последующие значения факториалов перемножаются с предыдущими, а хочу чтоб выводился факториал конкретного числа Staniislav Помощь студентам 2 19.08.2017 23:57
Большой Факториал!!! timsc1 Паскаль, Turbo Pascal, PascalABC.NET 3 02.02.2012 12:58
Посчитать факториал и биномиальный коэффициент (Delphi) tasashe Паскаль, Turbo Pascal, PascalABC.NET 3 18.11.2011 18:10
Как посчитать факториал числа в формуле? bloodargus Общие вопросы C/C++ 4 09.10.2010 11:27
Большой факториал на BigInteger RIO Общие вопросы по Java, Java SE, Kotlin 3 12.09.2010 10:32