알고리즘 문제 해결/BOJ

[수학] BOJ 2553 마지막 팩토리얼 수

jmkimmessi 2022. 3. 11. 00:00
반응형

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

 

2553번: 마지막 팩토리얼 수

첫째 줄에 N이 주어진다. N은 20,000보다 작거나 같은 자연수 이다.

www.acmicpc.net

 

문제 해결 알고리즘

 

0이 아닌 마지막 자리수를 출력해야하므로 우선 팩토리얼 계산할 때 마다 뒤에 있는 0을 제거하고,

오버플로우 방지를 위해 6자리정도만 남겨준 후 계속 계산해준다. (이 때, 충분하게 자리 수를 남겨줘야한다.)

그런 후 마지막 자리 수를 출력해준다.

 

소스 코드

 

#include <bits/stdc++.h>
using namespace std;

int main(){
	int N; cin >> N;
	long long result = 1;
	
	for(int i=1;i<=N;i++){
		result *= i;
		
		while(result % 10 == 0){
			result /= 10;
		}
		
		result = result % 1000000;
	}
	
	cout << result % 10;
}
반응형