Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 참조변수
- Compiler
- classloader
- 도커네트워크
- abstract
- MethodArea
- jdk
- 라피신
- 상속관계
- 운영체제
- JVM
- RDD
- java
- 바이트코드
- StackArea
- 포함관계
- LSP
- 42seoul
- pg_hba.conf
- Operating System
- javac
- 42서울
- SRP
- 자바컴파일러
- JIT
- 제네릭스
- HeapArea
- la-piscine
- generics
- 이노베이션아카데미
Archives
- Today
- Total
while(1) 작심삼일();
[백준 2004번] 조합 0의 개수 본문
http://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
풀이)
1676(팩토리얼 0의 개수)의 문제에 조합개념이 추가된 문제이다. 결국 0의 개수는 (2, 5)가 몇쌍있는지 갯수를 구하면 답이 된다. 그렇기 때문에 nCm 조합개념을 적용하여 2와 5의 개수를 세고 둘 중 적은 것이 0의 개수가 된다.
#include <iostream>
using namespace std;
int ans(int n, int x)
{
int ans = 0;
for (long long i = x; i <= n; i *= x)
ans += n / i;
return ans;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, m, two = 0, five = 0;
cin >> n >> m;
two = ans(n, 2) - ans(n - m, 2) - ans(m, 2);
five = ans(n, 5) - ans(n - m, 5) - ans(m, 5);
cout << min(two, five);
return (0);
}
제 코드는 절대 완벽하지 않습니다
더 좋은 풀이방법 혹은 코드에 관한 질문이 있으시면 언제든 댓글주세요!
'CS > baekjoon' 카테고리의 다른 글
[백준 11722번] 가장 긴 감소하는 부분 수열 (0) | 2021.01.31 |
---|---|
[백준 11055번] 가장 큰 증가 부분 수열 (0) | 2021.01.31 |
[백준 1931번] 회의실 배정 (0) | 2021.01.31 |
[백준 1929번] 소수 구하기 (0) | 2021.01.31 |
[백준 1912번] 연속합 (0) | 2021.01.31 |
Comments