Faktorialın sonundakı sıfırların sayı#123

Faktorialın sonundakı sıfırların sayı (Həll təhlili)

ədədinin faktorialı -dən -ə qədər olan ədədlərin hasilinə bərabərdir. Məhsulun sonunda sıfırlar və -in hasilindən yaranır. Lakin ədədinin sadə vuruqlara ayrılmasında ikiqavlar beşdən çox olduğuna görə, ədədinin sonunda olan sıfırların sayı, -in sadə vuruqlara ayrılmasında olan beşlərin sayına bərabərdir. Bu beşlərin sayı isə aşağıdakı kimi hesablanır:

\left\lfloor \frac{n}{5} \right\rfloor + \left\lfloor \frac{n}{5^2} \right\rfloor + \left\lfloor \frac{n}{5^3} \right\rfloor + ...

Toplama, növbəti əlavə sıfıra bərabər olana qədər davam edir.

Misal

-ın sonunda olan sıfırların sayını tapaq

\left\lfloor \frac{100}{5} \right\rfloor + \left\lfloor \frac{100}{5^2} \right\rfloor + \left\lfloor \frac{100}{5^3} \right\rfloor + ... = 20 + 4 = 24

Üçüncü əlavə sıfıra bərabərdir, çünki 100 < 5^3 = 125.

Alqoritmin həyata keçirilməsi

dəyərini oxuyuruq.

scanf("%d",&n); 

Formul üzrə cavabını hesablayırıq.

res = 0;
while(n > 0)
{
  n /= 5;
  res += n;
}

-ın sonunda olan sıfırların sayını çıxırıq

printf("%d\n",res);

Java ilə həyata keçirilməsi

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);    
    int n = con.nextInt();
    int res = 0;
    while (n > 0)
    {
      n /= 5;
      res += n;
    }
    System.out.println(res);
    con.close();
  }
}   

Python ilə həyata keçirilməsi

dəyərini oxuyuruq.

n = int(input())

Formul üzrə cavabını hesablayırıq.

res = 0
while n > 0:
  n = n // 5
  res += n

-ın sonunda olan sıfırların sayını çıxırıq

print(res)