▶ 문제
1564번: 팩토리얼5
첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다.
www.acmicpc.net
팩토리얼5란, N!의 0이 아닌 뒤 5자리를 말한다.
N이 주어졌을 때, 팩토리얼5를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다.
출력
첫째 줄에 N의 팩토리얼5를 계산한다.
▶ 풀이
- JAVA
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
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());
long num = 1;
long modV = (long)1e12;
for(int i = 1; i <= N; i++){
num *= i;
while(num%10 == 0)
num/=10;
num %= modV;
}
String tmp = Long.toString(num);
System.out.println(tmp.substring(tmp.length()-5, tmp.length()));
}
}
▶ 메모
모듈러 연산시 적당히 큰 값으로 하여야한다.
- 1eN: 1.0*10^N를 뜻한다. (ex: 1e1 = 10.0, 1e4 = 10000.0)
- str.substring(int idx1, int idx2): 문자열(str) 길이 기준 idx1부터 idx2까지 자른다.
'코딩테스트 > 백준(BOJ)' 카테고리의 다른 글
| [백준] 25943번: 양팔저울(C++) (0) | 2023.10.24 |
|---|---|
| [백준] 24511번: queuestack(JAVA) (0) | 2023.10.03 |
| [백준] 28279번: 덱 2(JAVA) (0) | 2023.09.17 |
| [백준] 14719번: 빗물(JAVA) (1) | 2023.09.16 |
| [백준] 5648번: 역원소 정렬(JAVA) (0) | 2023.09.14 |