|
0 / 0 / 0
Регистрация: 29.11.2015
Сообщений: 19
|
||||||
Точность вычислений у double29.11.2015, 11:43. Показов 7366. Ответов 8
Метки нет (Все метки)
Дана задача: "Определить, на сколько нулей заканчивается факториал числа n". Пример: вводим "25", на выходе должны получить "6" (25! = 15511210043330985984000000). Написал программку. Но столкнулся с тем, что при подсчете факториала точность вычислений достигает 16-ти знаков. Это приводит к тому, что 25! = 1.5511210043330986e+025 = 1.5511210043330986000000000 (9 нулей). Соответственно, результатом отработки программы будет 9, а не 6. Как можно увеличить точность вычисления?
0
|
||||||
| 29.11.2015, 11:43 | |
|
Ответы с готовыми решениями:
8
Точность вычислений в double (Обрезание числа) Точность вычислений
|
|
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
|
|
| 29.11.2015, 11:48 | |
|
Для выполнения подобной задачи придется писать обработку больших чисел через массив чисел.
Хотя мне кажется, что в вашем случае есть решение проще. К примеру, посчитать количество 10-ток (а также 2-ек и 5-рок), участвующих в вычислениях. Нужно подумать немного над хитрым решением.
1
|
|
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 29.11.2015, 11:51 | |
|
В число типа double влезает 15-16 значащих цифр. Это раз. Для данной задачи нет необходимости вычислять сам факториал, это два. Достаточно подсчитать количество входящих в него множителей, кратных 5 - это и будет ответ. Наверняка подсчёт кратных 5 чисел на промежутке от 1 до n не такое уж трудное дело.
1
|
|
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
|
|
| 29.11.2015, 11:52 | |
|
PavelPol, и не только десяток (2*5=10)
Можно, например, считать нули по мере их появления в произведении и каждый раз делить результат на 10.
0
|
|
|
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
|
|
| 29.11.2015, 11:56 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 29.11.2015
Сообщений: 19
|
||
| 29.11.2015, 13:08 [ТС] | ||
|
1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = 5040 8! = 40320 9! = 362880 10! = 3628800 11! = 39916800 12! = 479001600 13! = 6227020800 14! = 87178291200 15! = 1307674368000 16! = 20922789888000 17! = 355687428096000 18! = 6402373705728000 19! = 121645100408832000 20! = 2432902008176640000 21! = 51090942171709440000 22! = 1124000727777607680000 23! = 25852016738884976640000 24! = 620448401733239439360000 25! = 15511210043330985984000000 при n=4 нулей в конце факториала нет, при n=9 кол-во нулей = 1, (множитель, кратный 5, всего 1, это "5") при n=14 кол-во нулей =2, (два кратных множителя: 5 и 10) при n=19 кол-во нулей =3, (три кратных множителя: 5, 10, 15) при n=24 кол-во нулей =4, (четыре....: 5, 10, 15, 20) а вот при n=25 количество нулей увеличивается сразу на 2 и становится равным 6, хотя множителей, кратных 5, всего пять (5, 10, 15, 20, 25) Или я что-то не учел в подсчетах?
0
|
||
|
4182 / 3052 / 918
Регистрация: 19.11.2012
Сообщений: 6,196
|
||
| 29.11.2015, 13:14 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 29.11.2015
Сообщений: 19
|
|
| 29.11.2015, 13:19 [ТС] | |
|
0
|
|
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
| 29.11.2015, 13:21 | |
|
А можно использовать тип int128... Но, его сперва надо подключить в систему, т.к. скорее всего компилятор его не узнает.
0
|
|
| 29.11.2015, 13:21 | |
|
Помогаю со студенческими работами здесь
9
Вещественные числа с плавающей точкой, точность вычислений Точность в double Точность типа double Точность.Тип double
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь 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.
На борту пять. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|