백준 #2417 정수 제곱근
sqrtl 함수와 이진 탐색을 활용해 큰 정수의 제곱근을 구하는 문제.
#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
long long binarySearch(long long l, long long r, long long n) {
if(r >= l) {
long long mid = l + (r - l) / 2;
if(mid == sqrtl(n)) {
return mid;
}
if(mid > sqrtl(n)) {
return binarySearch(l, mid - 1, n);
}
return binarySearch(mid + 1, r, n);
}
return l;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long n;
cin >> n;
cout << binarySearch(0, n, n);
return 0;
}
Comments