관리 메뉴

사과하는 제라스

[백준 BOJ 1676번] 팩토리얼 0의 개수 본문

JAVA 백준 알고리즘 문제풀이/정수론 및 조합론

[백준 BOJ 1676번] 팩토리얼 0의 개수

Xerath(제라스) 2021. 12. 23. 21:37

목차

    728x90
    반응형

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

     

    1676번: 팩토리얼 0의 개수

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

    www.acmicpc.net

    1. 문제

     

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


    2. 입력

     

    첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

     

    10
    3

    3. 출력

     

    첫째 줄에 구한 0의 개수를 출력한다.

     

    2
    0

    4. 풀이

    숫자 뒤에 0의 개수는 1개의 2와 1개의 5가 곱해져서 생기는 것이다. 너무나도 당연하게 팩토리얼에서 2는 5보다 훨씬 많다. 모든 짝수는 2를 갖고 있음과 더불어 2^2, 2^3,...등 여러개 갖고 있다. 하지만 상대적으로 5는 적으니 풀이는 간단하게 5의 개수를 찾는 것이 곧 0의 개수를 찾는 것과 같은 것이다. 5도 n제곱짜리 수들도 많으니 5의 배수, 25의 배수, 125의 배수 등으로 경우를 찾아준 후 겹치는 것들(ex)125는 5의 배수이자, 25의 배수이자, 125의 배수임)에 대한 것도 고려하여 개수를 세어주면 된다.


    5. 소스코드

    import java.io.*;
    
    public class Main {
        
    	public static void main(String[] args) throws IOException {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine());
    
            if(N < 5) System.out.println(0);
    
            else if(N < 25) System.out.println(N/5);
    
            else if(N < 125) System.out.println(N/5+N/25);
    
            else System.out.println(N/5+N/25+N/125);
        }
    }

    6. 배운 것

    딱히 없음.

     

     

    728x90
    반응형