Страница 1 из 1

Найти 100! (факториал)

Добавлено: 01 июн 2008, 21:50
Den4ik
Написать программу каторая будет вычеслять 100! (сто факториал), используя
Динамические структуры данных.Очереди.

Re: Помогите написать прогу!!!!!!!

Добавлено: 02 июн 2008, 19:08
somewhere
Юзайте поиск, много раз уже решали

Re: Помогите написать прогу!!!!!!!

Добавлено: 02 июн 2008, 20:55
Den4ik
Вроде как все просмотрел, ничего похожего не нашёл.
Если вам не сложно помогите с программой.

Re: Помогите написать прогу!!!!!!!

Добавлено: 03 июн 2008, 03:17
Den4ik
Я знаю только такой способ решения.


function fact(x:integer):longint;
begin
if x=0 then fact:=1 else
fact:=x*fact(x-1);
end;
begin
writeln('otvet',fact(100));
readln;

Re: Помогите написать прогу!!!!!!!

Добавлено: 03 июн 2008, 11:38
Хыиуду
Рекурсивный факториал очень быстро загнется из-за переполнения стека. Итеративный более живучий
for i:=1 to 100 do
s:=s*i;
Но этот гражданин может дать (и даст скорее всего) ошибку выхода за границы диапазона. Потому что число 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 ни в один из известных мне фиксированных типов данных не уместится. Тут нужны языки, работающие с безразмерными данными, типа Python. Или как-нибудь хитро извращаться, например, написать функцию, которая будет умножать строки "столбиком"

Re: Найти 100! (факториал)

Добавлено: 03 июн 2008, 14:24
Serge_Bliznykov
можно (и, скорее всего, НУЖНО) использовать длинную арифметику...

Re: Найти 100! (факториал)

Добавлено: 03 июн 2008, 14:28
somewhere
В разделе "Ассемблер" есть решение с использованием байтовых массивов, элементами которого являются цифры. Реализация на паскале еще короче будет. Решение основано на принципе сложения "столбиком".

Re: Найти 100! (факториал)

Добавлено: 13 май 2015, 19:34
vnechai
Функция bcmul() отлично помогжет

Код: Выделить всё

<?php 
            $result = 0;
            $number = 1;
            for($i=1;$i<=100;$i++){
                $number = bcmul( $number, $i);
            }
            echo $number;
            $array  = array_map('intval', str_split($number));
            
            
            foreach($array as $key){
                $result = $result + $key;
            }
            echo "<h1>".$result."</h1>"; 
        ?>