티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/1564
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long N, result=1;
cin >> N;
for(int i=1; i<=N; i++)
{
result*=i;
while(result%10==0)
{
result/=10;
}
result %= 1000000000000;
}
cout << setw(5) << setfill('0') << result % 100000 << "\n";
return 0;
}
백준 2553번 마지막 팩토리얼 수와 유사한 문제이다.
뒤에 출력하는 자릿수만 다른 형태이다.
값이 더 크기에 모듈러 연산하는 값도 확장해준다.
그리고 출력할 때는 5자리에 맞춰 100000로 모듈러한 값을 출력한다.
이때 주의할 것은 맨 앞이 0인 경우 생략되어 나온다.
따라서 이를 0으로 채워주어야 한다.
C++에서는 setw(5)로 5자리 맞추고, settill('0')로 남은 자리 0으로 채우는 방법을 사용했지만,
printf("%05lld\n", result % 100000); 를 사용하여 더 간단하게도 가능하다.
'백준 > 실버' 카테고리의 다른 글
[백준 15719번] 중복된 숫자 (C++) (0) | 2025.07.05 |
---|---|
[백준 2725번] 보이는 점의 개수 (C++) (0) | 2025.07.04 |
[백준 2553번] 마지막 팩토리얼 수 (C++) (0) | 2025.07.02 |
[백준 20186번] 수 고르기 (C++) (0) | 2025.06.29 |
[백준 15954번] 인형들 (C++) (0) | 2025.06.26 |