Найти Факториал числа n - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Задание только кажется простым: "

Найти Факториал числа

n!

Число

n!

вводится с клавиатуры и не превышает

2000!"
Это уже длинная арифметика, в которой я ни черта не понимаю! Сколько намучался, а результат - "Неверный ответ"!

Решение задачи: «Найти Факториал числа n»

textual
Листинг программы
var
   a:array[1..1500] of integer;
   i,j,fl,n:integer;
procedure wr(var i:integer);
begin
if a[i]<10000 then write(0);
if a[i]<1000 then write(0);
if a[i]<100 then write(0);
if a[i]<10 then write(0);
write(a[i]);
end;
begin
write('N= ');
 read(n);
 a[1]:=1;
 for i:=2 to n do
  begin
      for j:=1 to 1499 do
        a[j]:=a[j]*i;
      for j:=1 to 1499 do
      if a[j]>999999 then
      begin
        a[j+1]:=a[j+1]+a[j] div 1000000;
        a[j]:=a[j] mod 1000000;
      end; 
  end;  
 fl:=1;
 for i:=1500 downto 1 do
 begin
  if fl=0 then
    wr(i);
  if (a[i]>0) and (fl=1) then
  begin
    fl:=0; 
    write(a[i]);
  end;
 end;
 readln
end.

Объяснение кода листинга программы

Список элементов:

  1. a: массив для хранения чисел
  2. i, j: переменные для циклов
  3. fl: флаг для проверки наличия чисел больше 999999
  4. n: число, вводимое пользователем
  5. a[1]: инициализация первого элемента массива единицей
  6. Цикл от 2 до n для заполнения массива a числами от 2 до n
  7. Цикл от 1 до 1499 для обработки каждого элемента массива
  8. Если элемент больше 999999, то добавляем его в следующий элемент массива и обновляем значение текущего элемента
  9. Цикл от 1500 до 1 для вывода чисел на экран
  10. Если флаг fl равен 0, то выводим число
  11. Если число больше 0 и флаг fl равен 1, то обновляем значение флага и выводим число
  12. Запрос на ввод с клавиатуры для завершения программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5
Похожие ответы