팩토리얼 0의 개수

Huisu·2023년 7월 23일
0

Coding Test Practice

목록 보기
18/98
post-thumbnail

문제

문제 설명

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

제한 사항

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

입출력 예

입력출력
102
30

아이디어

팩토리얼의 크기가 커서 integer, long으로는 그 수를 담을 수 없음

곱해지는 수 중에 2와 5의 개수를 세서 가장 작은 최소값만큼 10을 약수로 가질 것임

제출 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class five1676 {
    int twoCount = 0;
    int fiveCount = 0;

    public void solution() throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());

        for (int i = 2; i <= n ; i++) {
            search(i);
        }
        System.out.println(Math.min(twoCount, fiveCount));
    }

    public void search(int num) {

        while (num > 1) {
            if (num % 2 == 0) {
                twoCount++;
                num /= 2;
            }
            else if (num % 5 == 0) {
                fiveCount++;
                num /= 5;
            }
            else break;
        }
    }

    public static void main(String[] args) throws IOException {
        new five1676().solution();
    }
}

0개의 댓글