[백준] 8558

당당·2023년 7월 10일
0

백준

목록 보기
179/179

https://www.acmicpc.net/problem/8558

📔문제

음이 아닌 정수 n이 있습니다. (n 팩토리얼이라 읽는) n!은 다음과 같이 정의합니다. n <= 1이면 n! = 1입니다. n > 1일 경우, n!은 1부터 n까지의 곱과 같아 n! = 1 2 ... n입니다. 예를 들어, 4! = 1 2 3 4 = 24입니다.

아래의 조건을 만족하는 프로그램을 작성합시다.

  • 표준 입력으로 음이 아닌 정수 n을 입력 받는다.

  • n!의 십진수 표기에서 일의 자리 수를 저장한다.

  • 그 값을 표준 출력에 표시한다.

📝입력

유일한 줄에 0 <= n <= 30000인 음이 아닌 정수 n이 주어집니다.


📺출력

유일한 줄에 n!의 십진법 표기에서 일의 자리 수를 나타내는 한 자리를 출력합니다.


📝예제 입력 1

4

📺예제 출력 1

4

🔍출처

Contest > Algorithmic Engagements > PA 2001 0-1번


🧮알고리즘 분류

  • 수학
  • 사칙연산

📃소스 코드

import java.math.BigInteger;
import java.util.Scanner;

public class Code8558 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        BigInteger n=sc.nextBigInteger();

        BigInteger answer=new BigInteger("1");
        for(int i=2;i<=n.intValue();i++){
            answer=answer.multiply(BigInteger.valueOf(i));
            answer=answer.remainder(new BigInteger("10"));
        }

        System.out.println(answer);
    }
}


📰출력 결과


📂고찰

n의 크기가 30000까지 였기 때문에, BigInteger로 썼다.

그리고 메모리 초과가 발생하여서 answer을 미리 팩토리얼을 구하면서 10을 나눈 나머지를 구함으로써 일의 자리만 계산하였다.

profile
MySQL DBA 신입 지원

0개의 댓글