Loading...

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

DimitarRadoslavov avatar DimitarRadoslavov 1 Точки

Tech module проблем с факториел

Здравейте, решавам задачите от домашното, и имам проблем с който се сблъсквам от над 3 часа.

ето условието на задачата:

Write a program to check if a given number is a strong number or not. A number is strong if the sum of the Factorial of each digit is equal to the number. For example 145 is a strong number, because 1! + 4! + 5! = 145. Print "yes" if the number is strong and “no” if the number is not strong.

написал съм 5 for loops който не са вложени така прецених че ако са единични е по-добре. ето кода ми.

https://pastebin.com/HrxPLjJ6 co

проблемът ми е следния написал съм кода за 5 цигрени числа, с 5 цикъла, и  съм сложил един Console.WriteLine(numPlus); на последния ред

като напиша 5 цифрено число 40585 ми го смята с събирането на факториела, но не ми изписва "yes"(отговора е 40585) а ми изписва "no"  А иначе програмата го смята правилно? това ми е първия проблем. Вторият е че смята горния пример с 147 стойност, явно взима по една едiница от свободните два цикъла и ми я добавя към числото и пак не мога да взема "yes" в момента съм с 80/100 в djudje  но ми се иска да видя къде бъркам защото я решавам много дълго време и съм меко казано нервен че не мога да се справя сам. Благодаря предварително!

ето линк за djudje

Тагове:
0
Fundamentals Module
Google avatar Google 188 Точки
Best Answer

Здравей, Димитър,

Като подебъгвах малко кода ти виждам, че при вход 145 ти дава грешен резултат. Според мен си го направил доста сложно и пропускаш няколко варианта, примерно при голямо входно число (над 5 цифрено) няма да ти излезе резултат. Трябва да подсигуриш вариант за какъвто и да е вход.

Написах логиката набързо (код) като включих while цикъл и вложих for за факториела вътре. Дава 100/100 в джъдж. While ще цикли, докато не свършат цифирите от входа. Дебъгни ми кода стъпка по стъпка, за да разбереш как работи. Ако все още не е ясно (не знам дали сте учили while цикъл например), ще се радвам да ти отговоря.

пс. Забравих да допълня, при факториели винаги да се подсигуряваш на дебело, тоест, минимум long, a защо не и BigInteger, тъй като само при няколко стъпки и числата стават масивни.

1
24/09/2018 10:34:17
DimitarRadoslavov avatar DimitarRadoslavov 1 Точки

Благодаря ти за разясненията, учихме го вече while цикъла но честно да си призная не се сетих за това елегантно решение. Явно имам още много часове труд за да достигна по-лесното мислене на код :)

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