Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

vetrohodeca avatar vetrohodeca 0 Точки

7 задача от домашното

Здравейте хора, в 7 задача имаме да направим факториела на числа до 50 000.. В случая проблема е ,че факториела става прекалено голямо число, така че не се събира дори и във unsigned long long int. Максимално е възможно до 65, след което се получават грешки. Има ли начин да добавим някаква външна библиотека, така че да използваме тип данни, който е специално за такиава гоелми числа? Благодаря предварително :)

Тагове:
0
C++ Programming
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки
Best Answer

Здравей,

Забележи, че задачата изисква да преброиш нулите, не да изчислиш факториела. Да, това може да стане, като изчислиш факториела първо и след това преброиш нулите, но може и да стане без изобщо да изчисляваш факториела. И там всъщност е сложното на задачата - как можем да преценим колко нули има в едно произведение, без реално да умножаваме числата. Пробвай да разпишеш няколко факториела (и самите числа, които участват във факториела) и виж дали можеш да откриеш кога се получават нули отзад

А после, след като вече си написал кода за произведението, можеш да си свериш резултатите (за по-малки числа) на "бързия" алгоритъм, с твоя алгоритъм, който работи до 65 :)

Като цяло домашните са направени да могат да бъдат решени с покрития материал, но ако наистина искаш да пробваш да добавиш друга библиотека просто намери някоя из нета и виж отговора на колегата тук: https://softuni.bg/forum/14613/vikane-na-funkciya-ot-drug-fayl-9-ta-zadacha-ot-cplusplus-domashnoto (за тази задача също не е нужно ползване на множество файлове, но не е грешно)

Поздрави,

Жоро

1
05/03/2017 16:37:25
EduardEdi avatar EduardEdi 2 Точки

Няма факториели в тази задача. Условието е леко омазано, но примерите за верен отговор са достатъчни за да ти се изясни напълно какво се иска от теб.

0
vladimir.st.radoslavov avatar vladimir.st.radoslavov 29 Точки

Максималното N! което може да се побере в unsigned long long e 20  за  " 21 вече е n! = 21!  = 5.109094217 E+19 = 51090942171709440000 "  Ако не греша програмата за 20 трябва да отпечата 4 крайни нули . Възможно е да не съм разбрал коректно условието на задачата. Може би трябва повече разяснения за мен :-( извинете ме и ако може по подробно да бъде обяснено ако съм сбъркал, след като мине срока за предаване на домашното бих искал за видя готово решение с разяснения. Благодаря !

0
05/03/2017 16:57:41
y.ivanov avatar y.ivanov 33 Точки

Привет,

Ако под външна библиотека разбираш, тази на центъра, потърси там книгата  "++Алгоритми". Мисля, че там ще намериш доста интересни неща по темата. Предполагам, че я има и в електронен вариант. Успех!

Поздрави ;)

0
05/03/2017 20:26:55
Mhristoforova avatar Mhristoforova 166 Точки

Здравей,

Малко страни от C++ - a, моля прочети правилата на форума, за да слагаш по-конкретни заглавия на темите си за напред.7 задача от домашното може да се отнася за почти всеки един курс, който тече в СофтУни :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.