정수론 3

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

https://www.acmicpc.net/problem/2553 2553번: 마지막 팩토리얼 수 첫째 줄에 N이 주어진다. N은 20,000보다 작거나 같은 자연수 이다. www.acmicpc.net 문제 해결 알고리즘 0이 아닌 마지막 자리수를 출력해야하므로 우선 팩토리얼 계산할 때 마다 뒤에 있는 0을 제거하고, 오버플로우 방지를 위해 6자리정도만 남겨준 후 계속 계산해준다. (이 때, 충분하게 자리 수를 남겨줘야한다.) 그런 후 마지막 자리 수를 출력해준다. 소스 코드 #include using namespace std; int main(){ int N; cin >> N; long long result = 1; for(int i=1;i

[수학, 정수론] BOJ 9693 시파르

https://www.acmicpc.net/problem/9693 9693번: 시파르 N이 주어졌을 때, N!/10M이 정수가 되는 M 중 가장 큰 것을 출력하시오. www.acmicpc.net 문제 해결 알고리즘 1~N까지 모든 수를 2와 5로 나눠보면서 N!에 있는 2와 5의 개수를 찾고 둘 중 작은 수를 출력해준다. 소스 코드 #include using namespace std; int main(){ int cnt = 1; while(true){ int two_cnt = 0, five_cnt = 0; int N; cin >> N; if(N == 0) break; for(int i=1;i

[구현] BOJ 2004 조합 0의 개수

https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 문제 해결 알고리즘 $$ \begin{pmatrix} n \\ m \end{pmatrix} = \frac{n!}{m! ( n-m ) !} $$ 조합이 계산 공식대로 $n!$과 $m! (n-m)!$의 2의 개수, 5의 개수를 각각 구해준 후 빼준 다음에 적은 개수를 출력해준다. 소스 코드 #include using namespace std; long long divide_5(long long x){ long long result = 0; for(long lo..