ProblemSolving

[BOJ] 1564_팩토리얼5

ZzzzzL 2021. 1. 31. 22:41

팩토리얼5

문제 링크: https://www.acmicpc.net/problem/1564

 

1564번: 팩토리얼5

첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다.

www.acmicpc.net

 

입력받은 n의 팩토리얼 과정은 동일하다.
그리고 뒤에 나오는 0은 읽지 않을것이므로 없애준다.
그 후 적당히 큰 수를 잘라서 저장한다.

마지막 출력할 때 5자리로 짤라서 출력을 한다.
정수 출력에서 앞자리 0은 출력을 안하므로 printf("%05lld\n", fiveDigit);로 5자리를 채운다.

 

  • 정답 코드

      #include<iostream>
      using namespace std;
    
      int main() {
          int n;
          scanf_s("%d", &n);
    
          unsigned long long int fiveDigit = 1;
          for (int i = n; i >= 1; i--) {
              unsigned long long int N = fiveDigit * i;
    
              while ((N % 10) == 0)
                  N /= 10;
    
              fiveDigit = N % 1000000000000;
          }
          fiveDigit %= 100000;
          printf("%05lld\n", fiveDigit);
    
          return 0;
      }