Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 29.11.2015
Сообщений: 38

Подсчитать количество нулей в факториале

16.01.2016, 14:03. Показов 5807. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нули в факториале .
Подсчитать количество нулей в факториале n! Где (n<=500)
Пример
Input: 12
Output: 4
Так как число большое, придется записывать в массив mod 10 числа и искать потом по нулям в массиве
Я вчера не добил задачу, потому что устал, интересно было бы узнать ваше решение , добрые люди
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2016, 14:03
Ответы с готовыми решениями:

Подсчитать количество положительных и отрицательных чисел и количество нулей в массиве
1)Имеется массив А из N произвольных чисел - А(N), среди которых есть положительные, отрицательные и равные нулю.Выяснить, каким по счету в...

Подсчитать и вывести на экран количество N и номера таких столбцов, в которых нулей больше чем единиц
Матрицу М(12, 10) заполнить нулями и единицами случайным образом. Подсчитать и вывести на экран количество N и номера таких столбцов, в...

Написать программу которая считает количество цифр в факториале
Помогите написать программу которая считает количество цифр в факториале

5
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33393 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
16.01.2016, 14:46
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от fake364 Посмотреть сообщение
придется записывать в массив mod 10 числа и искать потом по нулям в массиве
На кой? Количество нулей - это количество перемноженных 5-ок на 2-ки в разложении числа на простые множители. Поскольку пятерок меньше, чем двоек, то достаточно посчитать число пятерок: она пятерка - в каждом пятом числе, еще одна - в каждом 25-ом, потом - в каждом 125-ом, и так далее...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
 n, x, s: integer;
begin
 s := 0;
 write( 'n> ' ); readln(n);
 
 x := 5;
 while x <= n do
   begin
     inc(s, n div x);
     x := x * 5
   end;
 
 writeln(s, ' нулей');
end.
Или тебе нужно общее число нулей, а не только завершающих?
0
1 / 1 / 0
Регистрация: 29.11.2015
Сообщений: 38
16.01.2016, 18:34  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Или тебе нужно общее число нулей, а не только завершающих?
общее.
но минутку, n - Это не сам факториал, а факториал числа, то есть его нужно найти, и не получится даже в longint его вписать , только массив цифр полученных через мод 10, как я понял.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33393 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
16.01.2016, 18:42
Так вот для нахождения количества завершающих нулей не нужно искать сам факториал. А для нахождения точного значения ВСЕХ нулей - да, нужно. Представь себе количество цифр в 500!

Есть формула для вычисления приблизительного количества нулей в факториале числа (основанная на формуле Стирлинга), дающая очень неплохие результаты. Для точного значения придется задействовать длинную арифметику, искать все цифры факториала и потом среди них считать нули.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
16.01.2016, 19:46
Тут умножение длинного на короткое, я бы не стал называть это длинной арифметикой.
0
1 / 1 / 8
Регистрация: 14.01.2016
Сообщений: 27
16.01.2016, 21:36
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно так
Pascal
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
const
  cS = 10000;
 
type
  TSar = array [1..cS] of string;
 
var
  N,d,m: integer;
  Sar: TSar;
  ans: longint;
 
procedure Mult(var Sar: TSar; n: integer);
var
  p, k, c, m: integer;
begin
  p := 0;
  m := cS;
  repeat
    for k := Length(Sar[m]) downto 1 do 
    begin
      c := (ord(Sar[m][k]) - ord('0')) * n + p;
      p := c div 10;
      Sar[m][k] := char(ord('0') + (c mod 10));
    end; 
    if Sar[m - 1] <> '' then dec(m) else break;
  until false;
  while p <> 0 do 
  begin
    if (m > 1 ) and (length(Sar[m]) >= 50) then dec(m);
    Sar[m] := char(ord('0') + (p mod 10)) + Sar[m];
    p := p div 10;
  end;
end;
 
 
begin
Readln(N);
  case N of
    1: Sar[cS] := '0';
    0: Sar[cS] := '1' ;
  else begin
      Sar[cS] := '1';                            //ищем сам факториал
      for N := 1 to N do Mult(Sar, N); 
    end;
  end; 
  m:=1;
  while Sar[m]='' do inc(m);
  for m:=m to cS do for d:=1 to length(Sar[m]) do if Sar[m][d] = '0' then inc(ans); //проверяем сколько 0
  Writeln('Ответ: ',ans);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2016, 21:36
Помогаю со студенческими работами здесь

Подсчитать количество нулей в заданном целом числе
Подсчитать количество нулей в заданном числе. P.S. Число целое.

В последовательности из N произвольных чисел подсчитать количество нулей
В последовательности из N произвольных чисел подсчитать количество нулей. Заданы массивы вещественных чисел X и Y. Сформировать массив...

Подсчитать количество нулей на главной диагонали матрицы
дана вещественная матрица 9х6 подсчитать кол-во нулей на главной диагонале (через процедуру) Добавлено через 9 часов 31 минуту ...

В последовательности из n произвольных чисел подсчитать количество нулей
Никак не составить правильно программу уже 3 часа мучаюсь. Помогите пожалуйста найти ошибку. Условие: В последовательности из n...

Работа с текстовыми файлами: Подсчитать в одномеpном массиве максимальное количество подpяд идущих нулей
Помогите плиз решить задачку)))Подсчитать в одномеpном массиве максимальное количество подpяд идущих нулей.)))спасибо заранее


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru