팩토리얼 0의 개수
2 초 | 128 MB | 31779 | 14956 | 12402 | 47.796% |
문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
풀이
1! 2! 3! 4! 의 결과는 뒤에서 0이 나오지 않는다. 5!에서 0이 하나 생긴다
6! 7! 8! 9! 은 0이 하나지만 10!에서 00이 된다. 마찬가지로 15! 20!에서 각각 0이 추가된다.
즉 5의 배수 단위마다 0이 추가된다.
그러나 25!은 5가 두번 들어갔기 때문에 2개가 추가된다
5! 10! 15! 20! 까지 0은 4개지만 25!는 0이 6개인 것이다.
25의 배수 50! 75! 100!에서도 각각 0이 두개씩 추가된다.
5x5x5인 125!에서는 0이 세개가 추가될 것이다
0의 개수 구하기
입력값 N이 주어지면 5로 계속 나누어 몫을 모두 합한다.
예를 들어 76이 있다면 76÷5 = 15 이다
15 ÷ 5 = 3 이다.
3을 5로 나누면 0이된다
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int sum=0;
while(N!=0) {
N=N/5;
sum+=N;
}
System.out.print(sum);
}}
Scanner를 한 번만 쓰는 경우 더 짧게 쓸 수 있다
import java.util.*;
public class Main{
public static void main(String[] args) {
int N = (new Scanner(System.in).nextInt()),sum=0;
while(N!=0){
N=N/5;
sum+=N;
}
System.out.print(sum);
}}
'Study > Baekjoon' 카테고리의 다른 글
Baekjoon3036: 링 (0) | 2021.12.03 |
---|---|
Baekjoon1010: 다리 놓기 (0) | 2021.12.02 |
Baekjoon1934: 최소공배수 (0) | 2021.11.30 |
Baekjoon2609: 최대공약수와 최소공배수 (0) | 2021.11.29 |
Baekjoon1037: 약수 (0) | 2021.11.29 |