티스토리 뷰
문제 링크 : https://www.acmicpc.net/problem/2553
#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;
result %= 10000000;
while(result%10==0)
{
result/=10;
}
}
cout << result %10;
return 0;
}
입력받은 N에 대해 팩토리얼 계산을 하되, 0은 모두 지워준다.
그리고 해당 값이 엄청나게 커지기 때문에, 적절한 값으로 모듈러 연산을 해주어야 한다.
너무 작은 값이나 너무 큰 값으로 모듈러 연산을 하면 시간초과가 발생한다.
이후 자리 수를 출력해야 하기 때문에 계산된 result에 10을 모듈러 연산하여 출력해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 2725번] 보이는 점의 개수 (C++) (0) | 2025.07.04 |
---|---|
[백준 1564번] 팩토리얼 5 (C++) (0) | 2025.07.02 |
[백준 20186번] 수 고르기 (C++) (0) | 2025.06.29 |
[백준 15954번] 인형들 (C++) (0) | 2025.06.26 |
[백준 11502번] 세 개의 소수 문제 (C++) (0) | 2025.06.26 |