반응형
https://www.acmicpc.net/problem/1300
숫자 범위가 굉장히 크다.
하나씩 다 따져보다간 시간이 너무 오래 걸린다.
바운더리 컨디션을 생각해보면서 이분탐색을 시행해야 문제를 해결 할 수 있다.
#include <bits/stdc++.h>
using namespace std;
int n, k;
int main() {
cin >> n >> k;
int st = 1, en = k , ans;
while(st <= en){
int mid = (st + en)/2;
int cnt = 0;
for(int i=1; i<=n; i++){
cnt += min(n, mid/i);
}
if(cnt >= k){
ans = mid;
en = mid - 1;
}
else{
st = mid + 1;
}
}
cout << ans << '\n';
return 0;
}
반응형
'Algorithm > problem' 카테고리의 다른 글
백준 1202번 보석 도둑 - 우선순위큐 활용 C++ (0) | 2022.10.13 |
---|---|
백준 10830번 : 행렬 제곱 - 재귀 (0) | 2022.10.11 |
백준 2213번 : 트리의 독립집합 - 트리 DP, C++ (0) | 2022.10.03 |
백준 2533 : 사회망 서비스(SNS) - 트리 DP, C++ (0) | 2022.10.03 |
백준 15681번 : 트리와 쿼리 - DFS , C++ (0) | 2022.10.02 |