Loading...

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

Daniel111 avatar Daniel111 11 Точки

Factorial Trailing Zeroes проблем с намирането на нулите

Здравейте не мога да намеря нулите на факториела, видях доста решения в нета, но пак не ми стана ясно, та някой може ли да ми обясни как се намират .

Благодаря предварително

 

кода  https://pastebin.com/N0xDQTGa

 

Тагове:
0
Fundamentals Module 06/09/2019 11:48:26
Bobo_bobkata avatar Bobo_bobkata 48 Точки
Best Answer

Здравей вариант е като намериш факториела на числото да го запазиш във стринг променлива и от там да я фориичнеш отзад напред (за да хванеме последните нули ако има такива) и ако намери число различно от 0 да брейква цикъла и да принтира дотук каунтъра като каунтъра го инициашизираш преди фора и ако нули на накрая просто увеличаваш каунтъра.

Още един начин без да пресмяташ факториела е е да направиш фор който започва от 5 и го увеличаваш като всеки път го умножаваш по 5 и проверяваш дали числото на което искаш да намериш нулите отзад разделено на променливата във фора е по-голвмо или равно на 1 и ако е тогава прибавяш към каунтър който пак то брои нулите резултата от делението 

Ето и линк към кода: https://www.google.com/amp/s/www.geeksforgeeks.org/count-trailing-zeroes-factorial-number/amp/

0
06/09/2019 17:49:23
Daniel111 avatar Daniel111 11 Точки

Мерси много за обяснението . 

0
hadzhiatanasov avatar hadzhiatanasov 1 Точки

Според мен най добре е да търсиш НОД (най голям общ делител) с 10 и да направиш цикъл, който ти брои до кога е вярно това, че НОД е 10.

0
Vankata83 avatar Vankata83 72 Точки
  • Take the number that you've been given the factorial of.
  • Divide by 5; if you get a decimal, truncate to a whole number.
  • Divide by 52 = 25; if you get a decimal, truncate to a whole number.
  • Divide by 53 = 125; if you get a decimal, truncate to a whole number.
  • Continue with ever-higher powers of 5, until your division results in a number less than 1. Once the division is less than 1, stop.
  • Sum all the whole numbers you got in your divisions. This is the number of trailing zeroes.

Here's how the process works:

I'll apply the procedure from above:

  • How many trailing zeroes would be found in 4617!, upon expansion?

    Then 4617! has 923 + 184 + 36 + 7 + 1 = 1151 trailing zeroes.

    • 51 :  4617 ÷ 5 = 923.4, so I get 923 factors of 5
    • 52 :  4617 ÷ 25 = 184.68, so I get 184 additional factors of 5
    • 53 :  4617 ÷ 125 = 36.936, so I get 36 additional factors of 5
    • 54 :  4617 ÷ 625 = 7.3872, so I get 7 additional factors of 5
    • 55 :  4617 ÷ 3125 = 1.47744, so I get 1 more factor of 5
    • 56 :  4617 ÷ 15625 = 0.295488, which is less than 1, so I stop here.

                  Then 4617! has 923 + 184 + 36 + 7 + 1 = 1151 trailing zeroes.

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