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; }