1 개요[ | ]
- BOJ 1300 K번째 수
2 C++[ | ]
C++
Copy
#include <iostream>
using namespace std;
#define MIN(a,b) ((a) < (b) ? (a) : (b))
long N, k;
long getCount(long num) {
long cnt = 0;
for(long i=1; i<=N; i++) {
cnt += MIN(num/i, N);
}
return cnt;
}
long solve() {
long start = 1;
long end = N*N;
long mid;
long answer = 0;
while(start < end) {
mid = (start+end)/2;
if(getCount(mid) < k) {
start = mid + 1;
answer = mid;
} else {
end = mid;
}
}
return answer + 1;
}
int main() {
cin >> N >> k;
cout << solve();
}
편집자 Jmnote
로그인하시면 댓글을 쓸 수 있습니다.