백준

백준 1676 팩토리얼 0의 개수(Java)

Park DJ 2023. 1. 20. 18:46

https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net


 

해석 및 팁

 


 

이 문제를 풀 때 그냥 팩토리얼을 구해서 뒤집어서 0의 개수를 세는 것보다는 n의 범위가 500 이기 때문에 규칙을 이용하면 쉽게 풀 수 있습니다. 10 = 2 * 5 일 때 5의 개수에 따라 0의 값이 변화하므로 주어진 n값을 5로 나누었을 때 누적합을 구해주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    long result = 1;
    int count = 0;
    
    while(n >= 5) {
      count += n / 5;
      n /= 5;
    }

    System.out.println(count);
  }
}