[백준] 1676번: 팩토리얼의 0의 개수
📝문제
예전에 풀다가 실패했던 문제를 우연히 발견하여 한번 풀어보았다.
수의 맨 뒷자리부터 0이 연속된다는 것은 그만큼 10이 거듭제곱 되어 있다는 것이다.
그래서 나는 에라토스테네스의 체로 소수를 찾았던 것과 비슷한 방법으로
n!을 소인소분해 했을 때 2와 5가 각각 몇 개 있는지 세어보는 방법을 택했고
그 중 작은 것이 답이 된다.
📌코드
package Solving;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ1676 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int cntTow = 0;
for(int i = 2; i < n+1; i*=2){
for(int j = i; j < n+1; j+=i){
cntTow++;
}
}
int cntFive = 0;
for(int i = 5; i < n+1; i*=5){
for(int j = i; j < n+1; j+=i){
cntFive++;
}
}
System.out.println(Math.min(cntTow, cntFive));
}
}
Author And Source
이 문제에 관하여([백준] 1676번: 팩토리얼의 0의 개수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@paulus0617/boj1676
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package Solving;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ1676 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int cntTow = 0;
for(int i = 2; i < n+1; i*=2){
for(int j = i; j < n+1; j+=i){
cntTow++;
}
}
int cntFive = 0;
for(int i = 5; i < n+1; i*=5){
for(int j = i; j < n+1; j+=i){
cntFive++;
}
}
System.out.println(Math.min(cntTow, cntFive));
}
}
Author And Source
이 문제에 관하여([백준] 1676번: 팩토리얼의 0의 개수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@paulus0617/boj1676저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)